A topic I'm sure has never been broached before!
Just one boneheadedly simple suggestion which would go a long way to staving off the cripplingly aggravating tendency of dwarves to act as stupidly as possible in any given situation: code them a sense of urgency. If a dwarf is eating or drinking and is only mildly hungry or thirsty, or is "on break" or attending a party or whatever and is above a certain threshhold of happiness, and gets asked to do something, let him either drink or eat the last bit quickly or just drop the beer keg or the meal or whatever and go and do it. Only if a dwarf is utterly famished or dehydrated or unhappy should it be impossible to interrupt their eating/drinking/leisure time. Ditto with sleeping if the dwarf isn't tired. This should also apply if they're doing something and their tummy rumbles. If they aren't starving, let them finish what they're damn well doing instead of throwing everything in the air and waddling off to the beer room the split second the urge takes them. In other words, dwarves should eat, drink, sleep and relax when they're only mildly hungry, thirsty, tired or unhappy (or idle) only if they have nothing else to do; if they have tasks to perform then those should take priority until their needs become more severe.
This goes double for when the fort is under siege. Threshholds should dip way down if the fort's under attack, everyone should be on a hair trigger and ready to do whatever it takes to save the fort at a moment's notice. I'm looking at you, squad leader that's too busy sleeping or drinking when a siege begins to haul his ass out of the fort and meet the damn invaders.