Part of the reason why containers get locked for task, is because of job item loss/consumption.
See for instance, the historic bee keeper bug. Dwarves would stand around indefinitely looking for a hive that had been consumed by another bee keeper, and never cancel the job. This was because the hive objects were not locked for task, and so the same hive would get earmarked by multiple bee keepers.
The idea with seed sacks is that when people carry seeds, they tend to carry whole sacks of seeds, rather than individual seeds. To keep dwarves from all trying to grab the same bag (the same way the beekeeper bug did), the bag gets locked for task.
To me, this makes more sense, realworld mechanics wise--
A dwarf takes a sack of appropriate seeds for his task, to the task site, then sets it down near the work site, which then releases it from task. (The dwarf selected for this task is determined by the granular chunk of fortress issuing the task, and a ranking "election" of dwarves with appropriate labor enabled, distance to target seed bag at time of election, and speed + strength scores of possible haulers. The fastest, strongest, and closest dwarf is selected to carry the bag which will service the other job tasks generated within that granular fortress chunk.)*
Dwarves near that task site, with tasks that need seeds of that type, will target the seeds in that sack with preference, will not move the sack, and instead take seeds out until either all the tasks in that granular region of proximity are satisfied, or the sack runs out of seeds, whichever happens first. Then a new job to return the sack to a stockpile (or barrel, if it still contains seeds) is issued.
Something similar should be done with fuel, ore, and bar use, vis-a-vis how much material should be taken to the job site. It is inefficient and silly to have the operator run all over the damn place every time. It makes much more sense to look at the manager queue list, (or building queues), and then have the operator go on a single raw material run, and move everything to the workshop before beginning. EG, if you have "make iron bars" on endless repeat, then calculate what the available number of iron ore boulders is, look for the closest aggregate group of such boulders is, and then calculate the load capacity of the wheelbarrow. Load the wheelbarrow with the maximum number of ore boulders (either available in that locality chunk, or that the wheelbarrow can hold, whichever is less), then haul them all at once to the work site. If the smelter requires fuel, have them evaluate how much ore they just collected, and have them collect that much fuel, and transport it to the worksite, then have them do the production run.
For both, dwarves should select the highest density source of material, in the shortest distance, then take it to the job site.
*
Job is first(reset at season change, and when bag exhausted) of this kind issued in this chunk? (True/false)
True-> Begin election
False-> Is Target Container inside work area chunk? (True/False)
True->Container contains untasked seeds suitable for task? (True/False)
True->Select seed and lock for task, perform task
False-> Unselect sack, reset JobFirst, postpone job until next iteration.
False-> Wait for container free from task_lock in area chunk; postpone job issue until next iteration
Election:
Select case (containers with work item)
Select subcase (Containers closest (path distance) to work site chunk)
Select subcase (Container with most task material inside)
Select case (Dwarves with labor enabled)
Select subcase (Dwarves closest to target [shortest path] container, from current position)
Select subcase (Dwarves in upper deviation for speed attribute)
Select subcase (Dwarf with highest strength attribute)
Lock [chosen container] for hauling task by [selected dwarf], with order to drop off container in target chunk.