Distribute MySQL in different cities?
How far apart (ping time) are the two cities?  80ms is what we experience going across the US.  It is not bad.

Writing to both heads of Master-Master is possible, but has lots of pain points.

NDB Cluster allows hot-hot, but (as you say) requires some conversion.

So, back to what I see as the only viable solution:  A single writable master, plus any number of slaves.

One thing that can make a remote master painful is if the user's "unit" of action translates into many SQL statements.  That can/should be solved by
(1) Rethink the code to use fewer statements
(2) Use a Stored Procedure to encapsulate as many of the SQL statements as possible, then deploy that on the remote Master.

Reads (other than "critical reads") can/should go to a slave, behind a load balancer.  And some mechanism should ensure that reads are usually "local".