The fundamental problem here is systematic risk, a bank should be able to fail without bring down other banks, unfortunately the system wasn't able to cope with the failure of a large number of banks who were all exposed to the same risk.
If a bunch of the big US car companies failed we may well have seen the same thing, because a lot of the US banks are heavily exposed to that sector. It just so happened it was mortgages that happened to be the tipping point this time.
Imagine your a bank and you have a bunch of other banks you deal with, you assign them all individually a "credit risk score" so you know how much extra to charge them to protect you against the risk of them failing before they have a chance to pay you what they owe you (much the same way as credit scores work for people).
But you have no-way of understanding the correlation between the risks, if all the banks your dealing with are actually exposed to the same underlying risk (i.e the CMO market) then the risk your exposed to is actually far higher than the sum of the individual risks. But obviously the banks you're dealing with can't tell you what their underlying risks are because that's propriety information, so all you have to go on is the risk rating given by ratings agencies.
This is a fundamentally hard problem to solve. No-one really has a good solution. It's much easier to say "let's ban CMOs" than to admit we don't really know how to solve the problem.