>how do you deal with that?
Pause the processes that use the objects we wish to mutate, mutate the objects, initialize the changed fields, resume the processes. (The processes never see the "impossible situation".)
>specify how to upgrade each object
>(which is burdensome
Burdensome?! Compared to taking down a live server and throwing away a long-running computation?