Actually, back in .NET 1.0/1.1, it behaved as you need.
You can still revert to this behavior by simply adding this row to your application configuration file, inside the "runtime" node:
This will prevent an unhandled exception in a different thread from terminating the entire process.