Por el error que muestras en la pantalla, parece que lcd_cols (LiquidCrystal_I2C(lcd_Addr, lcd_cols, lcd_rows)) cambia de valor al siguiente de 16, es decir 17, 18, 19, etc.
y con lcd.print empiza a enviara datos que la LCD no reconoce.
Tal vez deberías verificar mediante Serial.print que valor tiene lcd_Addr cuando sucede el problema.
También mediante un analizador lógico deberías verificar si las tramas de comunicación son lógicas cuando se produce el error. Pueda que sea el convertidor ese de I2C a paralelo sea el problema y no el microcontrolador.
Me parece que en Arduino no puedes depurar (debug), de esa manera sabrías exactamente que está sucediendo con los registros y variables del código cuando l'anomalía sucede.