i2c multi master "undefined conditions"
Is I2C by design only capable of handling multiple masters if one can
  guarantee that both will never access the same slave/slave register?


The issue is not limited and there is no fixed solutions (I am afraid) to multiple masters trying to access the same slave. It can be two or more masters trying to talk to each other too.  

There are many workarounds (with unwanted software burdens) which are limited to particular project and the person implementing itand use cases and may not work for another requirement directly.   

The I2C protocol I use in my current project is a simple three slave one master interface and still it already has 100s of lines of code for many bug fixes and workarounds. 

One attempted (but failed) way with two masters was to handover tokens in an orderly fashion. One will start the token and parse it. The guy who receives the token can either return it immediately or can perform operations in this window on other slaves or masters. The system wasn't reliable and all cases couldn't be tested to call it foolproof.  It was more like adding new bugs or undefined conditions.

Second use case (one FPGA and other a DSP) was a simple shared Port pins signalling that somebody is busy was helpful. It was never needed in the application to battle for the slave. It was needed just to not crash and fall into undefined state.  

I will be really happy to know if someone really has a foolproof suggestion.