Thanks for your patience guys. This was one of the hardest things to debug. Problem resolved though.
For you techies out there, the issue was that when a file is uploaded the contents are hashed (md5), then looked up in the database. If there is a matching hash, instead of processing a new image it just uses the contents of the original. This was why some images worked and some didn't. So basically if the file didn't exist after the hard drive crash but the hash was in the database it would show a missing image.
Regards,
EM