The idea is that all objects are kept in sync implicitly because the VM gets to the same result on each machine - it only has to send the vm state at the start or if something terrible happens. This is like how console emulator netplay or TASing work - these all rely on the machine getting to the same result from a set of inputs. The inputs would also govern the vm random seed, to avoid any two machines coming up with different answers.
Once every 100 ticks is megaslow - that's several seconds people would need to wait for their queued action to be returned to their vm. Since user queued interactions don't happen often, we could instead use the 100 tick packets as a sort of "keep-alive", this would perform the vm crc check to see if anyone desynced, and then instead send interaction packets as soon as user queued interractions arrive at the server. All normal interactions should be queued by all vms in the same way from user interactions, so we really only need to send user queued interactions.
Only problem here is, what if user x's pc executes tick 52 before it gets the information on what to do on tick 52? We could make the vm backtrack, but people would notice their sims jitter back a few frames. We really don't want people waiting ages for the server to ping them back their interactions, so the ticks either need to be sent often or like this. The packets would be quite small as they would only contain new user interactions (array of Object ID + interaction to perform) or even just be empty to keep a steady flow of packets. We can still do the crc check every large number of ticks as it isn't important to gameplay but is instead a stability check.
We COULD do this p2p, but we would still need to sync VMs against a "host", to keep everyone from seeing different things. But this means that the host vm would be able to do anything it likes, ie trick the simulator into giving them a million simoleons as there's no reliable reference to check against. The host would likely be the first roomie to log into the room, and it would be passed down to other roomies on disconnect.