Okay, I think I spotted the issue. I attached an updated map, all I changed was the SaveLoad script, so just copy and replace that file.
Nope, you each get your own local save file tied to your BNET username. So everyone saves their own file locally, and everyone loads their own file locally. Upon successfully loading your own file, you send the contents of that file to everyone else. In other words, you share your save code with everyone else. Once everyone has received each other's save codes it SHOULD proceed to the next step where it decrypts those codes back into usable data -> Gold, Lumber, Heroes, etc.
I think the issue you were experiencing was that it was proceeding too early, meaning the Host had received the other player's save code and was good to go - but the other player had not received the Host's save code yet and was not ready. So the Host was fully synced but the other Player was not, and due to errors in my code it gave the green light to proceed even though it needed to wait a bit longer.
(Again, Maxou's implementation is likely better, but I appreciate you testing this out)