Making `e' and `@-holes' special variables, in addition to `b', as in your patch, does seem to work.
No, it doesn't, sorry. With those changes, `vc-annotate' no longer signals an error, but it also annotates files wrongly. Some lines are attributed to version 1 that shouldn't be. Do you see the same for the RCS master files you have available for testing?
I tried to find the mistake(s) but it's very hard to spot let- and lambda-bindings intended to be used outside their lexical scope.