Uno R3 + 20x4 I2C LCD - screen freezes / garbage

I would thin the sketch down to the bare minimum by getting rid of the user defined characters etc.
Then I would make sure that I can display some static information in setup() with loop() empty.
Next I would try to display some changing information in loop().
After this is working would I start messing around with user defined characters.
Gradually keep on adding stuff until it breaks again and then you will have identified the source of your problem.

Don