If you really want to go with time stamps, you might also try going with a hybrid approach where you first assign a numerical version number, so you can update the model immediately and at the same time request a time stamp for it. Once the time stamp arrives, you replace the version number by the time stamp. So you would have
type Version = Preliminary Int | Permanent TimeStamp
and a message GetTimeStamp Int TimeStamp (so you can combine the right time stamp with the right preliminary version number).