I2C LCD Screen, Arduino Freezing after 12-32 hours

The pullup resistors should be placed at the Arduino side. There is no science behind that, it is common use that the I2C Master has the pullup resistors.

There is science behind it!

I2C is a simple low frequency transmission line. Long transmittion lines need to be terminated at each end in order to avoid reflection of the pulses carried on the line. A 1.5m I2C is very short, so the pull-up can be anywhere on the line with 4k7 should be enough.

I once ran a 116m I2C line over CAT5 cable out doors. I used twisted pairs for SDA and SDL where one of the twisted pair is grounded at the Arduino end. This effectively shields the SDA and SDL. I used 2k2 at each end of both SDA and SDL lines. This configuration was at the limit of the Arduino to pull the signal lines low enough and to overcome the transmission line capacitance. An oscilloscope can show when the correct pull-up is selected.

If you suspect noise is causing the problem, ensure the ground wire between Arduino and the LCD is good. You could also use pairs as described to provide shielding.