DDR2 memory addressing error
Found the solution after extensive debugging which consumed about 2 weeks. The problem was not with the DDR2 chip. We had enabled the data cache in the processor. So the reads were happening through the cache. While verifying the data written into the memory using the debugger, we found that the bytes were written properly. 
So we disabled the data cache and tried once again. This time the memory tests passed. Even consecutive writes and reads to the memory also returned proper results. 
Though the issue has been resolved for now, cache will be required for future applications. So right now, I am looking at the option of replacing the processor itself. Not sure whether the module inside the silicon has gone bad or it arrived faulty itself!!