I2C LCD Screen, Arduino Freezing after 12-32 hours

Using no pullups (just the internal) and 3k9 is a big difference. But I can not guarantee it will work.
If you give links to your modules, I can try to see if there are pullup resistors. Most modules have them.
Can you try other values, like 10k ? or 22k ? If that already makes it work, then 3k9 will be good.

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.

When all your modules are 5V modules, and they have a 5V I2C bus, you can connect the pullup to 5V.
When one of the modules is a 3.3V module, you might fry it when the SDA and SCL are pulled to 5V. In that case you need to pullup to 3.3V. But if you have 5V I2C mixed with 3.3V I2C and longer wires, you better use a level shifter to get it right.

You don't have to calculate the exact pullup resistor. You could have used 2k2 or 4k7. Some I2C devices allow a pullup of 1k (the total parallel pullup resistor), while other devices start grumbling with 2k2. So the rule of thumb is to use 4k7. The maximum value is about 10k, higher values makes the I2C bus vulnerable for electric noise, even if the I2C stays on a pcb board.