I find a couple of optimization that can be done.
#1 I've noticed that we are sending the conditional commands to the backup sites without checking if the command is successful in the originator site. I think we can save network bandwidth and time to avoid serializing the commands that will fail...
#2 Also, the originator is the node that sends the command to the other sites. IMO, it can generate inconsistencies because 2 or more nodes in /site_a/ can update the same key concurrently and other /site_b/ can receive the commands in different order (at least, I didn't see any protection mechanism against this case)
I think the backup to other sites should be sent by the /primary_owner/ (lock owner).