I take it that you set which route is intended for a given minecart by using a suite of tracks with pressure plates, which then join up for the routing section? Or do you set the signal by levers, or some other mechanism? I'm quite interested in your route circuitry.
I'm using a suite of tracks. So, loading up the game, cause a screenshot helps explain:
This is the workshops loading area, which leads upstairs to workshops/stockpiles. There are four entrances/exits into the loading area, corresponding to four source/destination pairs. So, the bottom track goes to the bridge, and at the bridge there is a similar looping track end specifically for sending carts back to workshops. Any cart that enters the system on the Workshops->Bridge track will end up at Bridge, regardless of what's in the cart, what the hauling route says to do, etc.
The purple black bronze wall has pressure plates that open the doors. This is just to keep dwarves from picking up the carts when they are waiting.
Inside the walled section, there are three shared track segments which control the influx of carts from the four points of entry. These are each marked by two pressure plate/roller/door setups, and correspond 1-to-1 with a "track circuit" elsewhere. When a track circuit sends
releasedir, releasing, say, Workshops->Bridge, the "route stepper" or whatever you want to call it (the Route Circuit in my wiki page), gets triggered and keeps track that the minecart is en route.
Basically, this relies on having these different track entrances, so that a given track circuit knows that whenever it releases the right side, it's starting a specific route. Subsequent track circuits trigger to all possible relevant routes, so some track circuit might be used to ferry both Workshops->Bridge and Farms->Bridge, so it'd send a signal to both of those routes. The only route that would update is the one known to occupy the shared track getting released.
Also worth mentioning the white rollers. I've been calling these "switching rollers", and they're controlled by the route bits. So the Farms->Workshops route, for instance, has a bit for when it's on the track that has the switching roller it needs, and thus that bit turns that roller on.
When I was designing my aborted attempt at something similar, I planned to have a centralized "sorting facility" to receive all goods and load up each workstation's payload. That really simplified the architecture, because it meant that every other workstation would only need to send goods to a single place. Then the sorting facility was going to have a loop-route for each type of good, which would detour to a track stop for each workstation if that workstation didn't have enough of that good. The problem was that I was going to use a different track for each loop, which was going to be a problem for workstations that were down below the caves. Your single-track routing seems like the solution.
This is a neat approach! I was considering systems along these lines - I had wanted to sort minecarts by weight, and have centralized dispatch. Ultimately I kind of just settled on this scheme because it was the first thing I could think of that I could assure myself could work.
I don't really mind having separate loading zones for each destination - I figure the dwarves are going to be loading the minecarts by hand at some point anyway, might as well have them do the destination-sorting up front and make that load only happen the once. But lots of the same goods do go to more than one destination... having a centralized storage area makes a lot of sense. Now that I think about it, it doesn't really matter what track topology to use (as long as there's some way of identifying the carts as they enter the system.) The waiting/release circuitry just makes it so that the hand-off record-keeping becomes possible.
My system also doesn't do any kind of quantity checking, dwarf-assisted or otherwise. With food I'm using the hauling "Give to Stockpile" option, so the dwarves do the quantity checking, leaving excess food in the cart to get sent back. It would've been nice if it could've happened automatically, but I'm keeping the scope of the project to just the routing aspect for now.