The simplest approach to distributing "standalone" decker executables is to take advantage of the "start.deck" mechanism, which you might be alluding to using in your virtual filesystem experiments.
See also this more recent discussion: https://itch.io/post/12903659
As a side note, if you're having severe performance problems with multiple animated widgets on a card, make sure the animated widgets are each handling the view[] events they are being sent, and not bubbling them up to the surrounding card. I've seen examples in the past where this type of programming mistake lead to games executing their "main loop" logic dozens of times per frame instead of once, with corresponding performance impact. Lengthy deck-level scripts can also add overhead to event processing; moving the bulk of these scripts into a module is one way to reduce this overhead.