Okay, I've done the YACC thing before, and while it's not quite as intuitive, it's not so bad. Furthermore, if most of the slowness of RecDescent is from its being top-down, not from its being full-featured and in-perl, then recompiling the parser after each syntax block should be considered possible.
(yacc perly.y; gcc -c y.tab.c) takes about 1 second on my laptop, and since this feature will be more useful in major scripts than one-liners, since we can probably cache standard-library transformations, etc., performance problems don't put this sort of thing out of reach.
Of course, I'm not volunteering to write the code here...
/s