Well, I reversed the LCD pin order, and it didn't respond at all (not even the blocks appeared). I imagine it had to of been the correct orientation originally as otherwise the contrast adjustments wouldn't have been working.
However, believe it or not, after turning the LCD back around to its original position, "Hello world" magically appeared!!! Apart from a few missing dots in the first character (which presumably must be a hardware fault), I have a working LCD!
Thank you again for the help. I don't think I will ever know why it decided to work!
Sometimes an LCD can have a decent contrast when the contrast pin is pulled to GND. So if your pin 3 was connected to a data pin during the pin order reversal, and that pin is pulled to GND, you could see the blocks though. Good thing you found your problem.