For us, the shopId is the owner of the data. We have a 1-1 relation between accounts and shops, but we support multiple shops per account using the adminUIShopIds. The shopId in the accounts collection indicates what tenant it belongs to. We manage permissions by granting the proper groups to each account when it's created.
Yes we are using a select component that allows us to administrate each shop that the account has assigned. For instance, if an account has, lets say four shops, the select component list each shop, and the user can select the shop and the admin fetch the corresponding data to that shop. It's very practical indeed, but for now, our use case for this functionality is for the primary shop that handles other shops. It's working very well at the moment.
You are right I'm not sure if that works in your case since you are not using Hydra. But your implementation sounds very tricky, so I can't help without having more specific details.
We use vercel to deploy shops. We created a plugin to integrate a vercel with RC. The problem with deploying storefronts in your infrastructure is that you are charged for resources that do not core for your business. At least that's how we see it in our case. So we just want to have the core services in our infrastructure and depending on each client we use logflare and sentry to monitor each storefront from vercel.
I hope that helps you.