STM32F4 I2C Address Timeout
I have witnessed this on other STM32 devices I have used. The basic issue is that in some cases there is a read-modify-write operation to I2C control register which ends up setting STOP and START bits simultaneously. ST HAL has had similar bugs for years, it is not 100% reliable, and must be fixed by accessing the I2C peripheral registers correctly in every situation (according to Reference Manual and Errata). 
This error gets triggered more often if there is other stuff happening as well (interrupts at critical moment or other tasks running under RTOS). They never seem to get it right, and each time they make changes to fix something, it works a bit differently, but it is never completetly fixed. For this reason it's best to make your own I2C handling code that fits your needs, even if it means to use the existing HAL as a base for your modifications.