What happens when you load an old wallet.dat into a new client where some bitcoins still exist but some dont, does the network simply work out the new balance and correct the .dat?
Short answer: yes. However, there is nothing to 'correct'.
The wallet.dat file does not record your coin balance; it contains (secret) keys associated with your public bitcoin addresses. The transaction history of all bitcoins (and, by extension, your current balance) is kept in the public blockchain, separate from your wallet.dat file.
Simply, the bitcoin client scans the blockchain and finds transactions associated with the keys in your wallet.dat. It then 'knows' your current balance and transaction history.
Loading an old wallet.dat into a new client will not affect any of this, since both new and old wallet.dat files contain the same keys. Thus the client will come to the same result when it scans the blockchain.
One caveat is that if you had generated many (100+) new addresses in your new wallet.dat, some of those new addresses may not exist in your old wallet.dat file. Thus if you were to load the old one, transactions associated with the new addresses would not be counted properly. My details may be off, but it works something like this: a 'fresh' wallet.dat contains keys for 100 or so addresses. After you exhaust those, another block of 100 keys/addresses is automatically generated. If this is triggered, the new wallet.dat file will contain the new addresses, but your old one won't.
Thus it is good practice to regularly backup your wallet.dat file to ensure you always have all your addresses.