Globally serialize metadata updates and reads

Without this we have very rarely seen failure to read and parse the metadata JSON
when the read happens concurrently with a write/update.