Thus when postprocessing someone's work results, the system must work against the master data that was valid when the work was executed.
I suggest you to have a look at the Event Sourcing pattern to capture events from the mobile system.
Hence the system must preserve older versions of master data.
I understand the need to preserve older versions. Again I would suggest event sourcing not only in the mobile but also in the master system.
Yet I don't think necessarily needed re-run the captured events against the same object state (data).
The person downloads the master data from the system to his workspace, goes out,
Consider that when the user does this it creates a new temporal branch or parallel model if you will. When the user comes back what you want to do is re-conciliate operations/changes on both sides.
Assuming that there were no software upgrades on both sides, what you want to be sure is that events captured from the mobile system don't collide with events made on the master system.
Say if you changed the name of a person (PersonAddressChangedEvent) in the mobile system when synching back you want to check if someone did the same, and if so you want to give the user options to resolve the situation.
Does this make sense?
Nuno