Regarding AcheronVM, most of its features actually were 6502 implementation details that I leaked out to useful features the VM itself, meaning that such features happen "for free", like the carry stack and various 8-bit address indexing modes. The additional effect on VM code footprint by having a sliding register window in comparison to stack-based operations or accessing an orthgonally indexed register bank, is likely under a dozen bytes and could be zero depending on your point of reference.
I do think you need to do gain a bit more understanding about the concepts of execution complexity and code representation, and how those affect the real tradeoffs in various approaches (hardcoded, stack-based, register files, etc). There are no silver bullets. However, the particular downsides you back away from may not really affect things much: Because of the low level of abstraction of 6502 code, many of the directions discussed here will be very advantageous regardless of perceived downsides.
One thing that I think is certain, however, is that you will need to perform some major rearchitecting of your project. In my personal opinion, your project does not sound big enough to be fearful of refactoring & porting, so go for it. You will end up raising the abstraction level of your code by most of these techniques, simplifying the authoring processes.