At this point, I'm thinking Al (aratti) was right.

AN734 didn't work either.
Bytes are being put in the SSPBUF without an address match.
So the slaves that aren't being accessed are overflowing during reads from other devices.

The code I gave earlier works because it's resetting the overflow in the main loop, but that's just not right.

I'm trying to get some more info from Labcenter.