To solve the problem of Dwarves leaving during sieges or even the problem of solo dwarves braving the wilds being unrealistic can be solved by having any emigrating dwarves leave with the next caravan, perhaps after they have passed some kind of randomised test for the permission to accompany the merchants.
If an unhappy dwarf fails to travel with a merchant then he will be forced to stay at your fortress, during which time his unhappiness could well lead to some kind of breakdown. You could also work the family and friends angle into this as well.
Continuing on emigration and immigration, I always liked Tropicos' system of immigration/emigration control - skilled migrants only, no one gets out alive, foreigners OUT etc. The Migration system of Tropico also takes into account pay scale, employment rates, wealth and happiness (Which is really conducive to how well you score on employment, income disparity etc) among others. Perhaps once the population of a fort hits a certain amount a position could be made to control population, rather than just having the ability to turn immigration on and off as an option during embark as a lot of people have seemed to ask for. I like the idea of lots of immigrants, but I also welcome the idea of emigration as well. It's fun to come up with imaginative ways to rid yourself of endless streams of dwarven immigrants but it would also be nice to have dwarves leaving of their own accord, especially if they are skilled workers unhappy with your progress.