It seems the Wire.begin() procedure is intended to be called only once, usually in setup(). I found out the hard way it bombs if you keep calling it, though it does not complain.
Could we update the documentation to:
Description: Initiate the Wire library and join the I2C bus as a master or slave. This should normally be called only once.
The Wire.begin() should only be called once - it initializes the wire library.
You will need to address each of your slave devices just before you talk to it using wire.beginTransmission(Address). Then you use wire.send() to queue up the message data and wire.endTransmission to initiate the sending.