Your client tried to send transactions that for whatever reason never actually reached the network, so your client is still treating them as spent. If you export your private keys and import them into a new wallet, you should have the funds unencumbered.
i have tried this to some extent... but not quite sure about all the change addresses. i have checked all my addresses against blockchain.info and they all come back as empty...
Could you please define to some extent?
If you exported all the private keys from the wallet.dat that was having this issue. Moved the wallet.dat it out of the folder or renamed it, so it created a fresh wallet on boot. Loaded the private keys back in and encrypt it with password again. Everything should be working again. (ofc keep in mind that if the blockchain is not up to date, not all funds may be shown in your balance)