Instead of using a separate swingset.CoreEval for each contract deployment, do one CoreEval to deliver a contractControl to the developer's smartWallet.
Then use myContractControl.installAndStart(...) and myContractControl.upgrade(...) after that.
cf.