Marching Cubes Terrain/objects

Saving/Transmitting changes.
Saving and loading data is pretty straight forward and easy.
Transmitting changes is just as easy.
The only complex part is sending data for a given chunk that is different from the precomputed noise data. This involves having a variable to track how many times a given chunk has been change from the time it was precomputed. Then when other clients connect to the server and start loading the level the start processing each chunk and send a request to the server saying it is about to load chunk X with a “timestamp” of Y, if the server find that chunk X’s timestamp matches the client then nothing changes. If the server finds a difference it sends the correct data along with the correct timestamp for X and when the client receives the data it updates the chunk data and timestamp and re-generates the chunk as needed.

As for loading something from World Machine or GeoControl this is not a problem.
As for the “stamps” idea , this is also doable. You could easily blend this to the noise data to make it look natural.