The problem with most of these hacks isn't usually so much that the hacked system itself has lots of valuable data, but that the data from the hacked system can be used to hack into other systems that do have valuable data. Just like we tell people to only use a different password per-site, we need the option to essentially give only tokenized versions of our data to third parties. We've started somewhat with tokenization in place of credit card numbers, but we should be able to do this in many more areas.
There are obvious difficulties here regarding how we'd handle certain fields (e.g. how do I calculate your shipping if I don't know your exact zip code), but these should still be solvable problems.
The alternative of believing that every rinky dink (or non-rinky dink) site out there will be able to keep your data secure is laughable.