@rodber sorry for this taking so long, but I feel we are a bit talking past each other.
To take a step back, on Cloudron all apps run in a read-only filesystem, the app code has to be provided in an immutable image. So an app package must contain all the code already and cannot download or install itself during first run. There is however a read/write folder provided at /app/data mount point if the app needs this. Sometimes those are config files, data or also plugins installed later.
Since you mentioned that both free and paid versions are a different code base, then they also would have to be different app packages currently.
It is not quite clear to me unfortunately what the implications of the various mentioned methods bootstrap/container-builder/custom image/container registry mean in this context. Packages for our users, once published would reside in our company namespace at docker.io to ensure consistency and availability for as long as we support an app.
I will take another look at where we stand currently for the free version as a start residing at https://git.cloudron.io/cloudron/cheveretofree-app