I am doing the same thing than you. Lucky you are because in my case the slave address does not mean to output on the bus... The busy flag workaround seems though.
I understand your point. I am facing a problem with I2C. First that busy flag which seems to be fixed with a workaround found on first stack exchange and then on ST errata. After, the I2C bus is not able to send the slave address and can't figure out...