Unless I'm misreading what you're writing here, that's at odds with my own experiences in .31.25 anyway. I've savescummed before someone went into a mood, and next time loading the game someone else got the mood. It seems that the game really does decide that on day X, someone will get a mood if anyone is eligible. It then goes through and checks (maybe randomly) for an eligible dwarf and they get the mood (which may also be of a random sort, I don't recall).
I just had the same situation occur, but with different outcome: I saved, tried to breach magma, and partway through an initial success, some dwarf got a mood. And then my miner caught on fire, so I killed the process and tried again. Only this time, no dwarf mooded until well after I got the magma stuff finally breached properly.
As for fixing the problem without having any statistical effect, it should do all the checks it always has, completely ignoring animal hauling status. Then once it decides that a dwarf is gonna get a mood,
queue the mood up internally, and as soon as the dwarf is done with the job and looking for a new one, the mood is the job that gets "picked". In fact, this mechanic could potentially be used for a dwarf doing
any job. That way, a dwarf is not so ADHD to get so completely distracted by a good idea to endanger the fort for other similar (and similarly silly) reasons.
Now I know some of you think that the above solution isn't very dwarfy, but I'm personally of the mind that dwarfiness be damned, silliness like that should be allowed in the game
because it's silly. At most, it should be left in
despite being silly because there are greater complications or greater priorities. Of course, it's obviously up to the Toad in the end.