I think your old wallet.dat backup has the key to your new address. I read it on here that bitcoin core do not create new addresses when you request them. They are picked from a pre generated list in your wallet.dat, so your old backup may have the key to your new address even though it is a backup. Use pywallet to look inside your wallet file.
Half correct. Bitcoin core pregenerates 100 address for use when the user clicks to get new address.
After 100 address, a new set of addresses would be created. [Correction: After each key is generated by user and user interacts with the wallet.dat, the wallet pregenerates one more key to maintain 100 key in keypool. (Thanks shorena for correcting!)] You would then have to rebackup it. HD wallets eliminates this limitation.
Data from hard disk failures can be restored but they certainly don't have 100%. My advice is that you can bring it for a quote and if it's too expensive or impossible to recover, consider it as an expensive lesson.