I suggested this, which will probably work but is a bit hacky in the approach: it consists in running one patch after the other, and then killing the currently running one using the button on the Bela cape (which can be remoted to an external switch if needed (e.g.: for panel-mounting).
The only downside is that you may get some clicks in the audio if you are playing sounds when you kill the patch and start a new one. Also, it takes a few hundreds of milliseconds to switch patch.
If you are practical with C++, then you can work on the C++ wrapper for heavy to run multiple Heavy patches but only process those that you are actually using. To get started, have a look at
scripts/hvresources/render.cpp which is the default wrapper for Heavy files and then look at the Heavy C or C++ API: https://enzienaudio.com/docs/index.html#12.c you will realize that you can have different
HeavyContexts instantiated and call the ones you need when you need.
A better way of doing this would be to support this in the core. It is not straightforward (it's difficult to be flexible and easy to use at the same time)(, we are working on something, but it is not going to see the light any time soon (if at all).