Там было все куда прозаичнее. Код работы с eeprom был безжалостно скопипащен из какого-то проекта найденного на гитхабе. Он не учитывал, что I2CMasterBusy() == false вовсе не гарантирует, что удаленная периферия действительно ответила на запрос.
Короче скопипастил быдлокод чуть поприличнее и все заработало.
Меня теперь тревожит другой вопрос: как оно работало _до_ этого?