Real dwarfy free will would be if we completely eliminated being able to tap dwarfs for labors, and be at the mercy of their extensive preferences and dislikes.
The player would design the fort, set up buildings and furniture, but the dwarves would decide amongst themselves who'd go to what workshop and haul what furniture based on what skills and prefrences they have instead of labors enabled. Instead of making a skilled Mason carve out blocks, maybe an idle Cook would try her hand at it if she finds a boulder she likes and gets there first. Building workshops would take skill in the relevant field, not the labor enabled.
Then, certain attributes would lend themselves to how a dwarf chooses a job from the long list of possiblities. A dwarf with better Intuition or Analytical Ablity would be able to see and choose the higher priority jobs better, such as taking items to the trade depot. Creative dwarves might attempt the craftier jobs even if they don't have much skill in the material. Helpful dwarves with strong Empathy might pitch in easier.
All dwarves become happier since they are doing jobs they actually like doing. They'd gain in skill at labors they attempt as normal. Maybe even more than usual since they're focusing on something they have an interest in.
The leader dwarf could tantrum when jobs are not being done and prod a dwarf in that skill to get to work. He might be the only one doing the work that's needed. ("If you want something done, gotta do it yourself, grumble grumble . . .") Or at least the tapped nobles do their noble jobs and lead by example. And they, too, would tantrum and try to get dwarves to complete tasks related to their own jobs. The broker might ask for haulers, the chief medical dwarf asking for nurses.
Because of the chaos this might cause, you'd always have the ability to toggle it on and off, essentially playing the leader declaring such freedom and rescinding it in cases of goblin invasion. Perhaps as part of the global job orders. Or you'd globally just put Masons to work and let the others have their freedom for a while.
Before then, and easier to implement, would be more reactions and activities for the "idle" dwarves, as Tsumi mentioned. A dwarf might fill a flask with booze or pick up a meal and then go
pester visit someone in a workshop. That not only would fulfill the drinking and socialization needs of the idle dwarf, he'd maybe pick some up some pointers and skill at the active job he witnessed.
Another idea is to make some lesser artifact moods where a dwarf gets an idea, chooses currently-available materials (or comes up with random requests but won't go insane if the materials are not on hand in time), and claims an idle workshop to experiment. It might or might not work, and the dwarf won't automatically become Legendary, but he will gain immensely in the relevant skill, say a skill level or two.
I'm sure there's many other little reactions and jobs for "idle" dwarves to do. We'd set most as easily cancelable in case of pressing concerns like needing everyone to haul stuff to the depot.
As for the shift idea, that, too, could be a toggleable setting between "slavemaster" (work until tired/hungry/thirsty as it is now) and "shiftwork" (do a few jobs, then go on break and don't look for work in that labor for at least X game ticks). Dwarves love being industrious, so the switch won't cause happy/unhappy thoughts beyond the gain/loss of extra socialization time.
Ooh, combining some of this, you'd end up with dwarves having both professions and hobbies! They'd end up alternating between the two. Take a shift, then go on break and do a job in their hobby or experiment with something in their other interests, then go feed, go sleep, and wake up refreshed for a few more jobs on shift.