I am having a look at v17 and can confirm there is no obvious technical problem with your BUT it could definitely be optimized, here are some avenues. These are based on my experience and observations given we have zero documentation on the behaviour you should expect from AI trafic code.
1. Way too many routes.
As you noticed AI traffic does not really compute 'alternative' routes and will insist in using the 'most efficient route' rather than the shortest, based on some mysterious logic (I guess in your case something like "Go East as much as possible for as long as Going north does not take me closer to threshold".
Groundnets work best with a simple unique route between each apron and each threshold.
The way I normally achieve this is by forming a series of 'loops' of taxiways.
Wherever two loops connect aircrafts can jump from one loop to the other so the 'friction' point between two loops behaves a bit like a touch point between two cog-wheels (if it makes sense). Each apron access point is connected to a single loop (same for each threshold.
As a result all the aircrafts 'pile up' one behind each other on each loop and give way (or jump loop) at touch points.
Graph below shows the loops in red and how an aircraft (in green) arriving from the north may have to circle all around the field to park close to where it lands. This technique allows you to easily handle large network without having to even think about all alternative routes options
In your example taxiways D and E seems to form such a natural loop
2. Adding extra Nodes on the middle of runways is useless (more globally remove any unused node/route)
Departing aircrafts join the runway at the node closest to the threshold (as defined in APT.DAT so for example your B2 taxiiway is useless for departures.
Arriving aircrafts tend to roll forever on the runway after slowing down and NOT vacate the runway as soon as possible. In my case I am able to get them to vacate before the end of runway (threshold) but rather close to it and never halfway through.
3. Unrelated to your routing problem, your pushbacks are wrong. You should not have a pushback holding point on the taxiway the aircraft will use to roll forward once the pushback completed. see
viewtopic.php?f=23&t=32433&hilit=+pushback&start=15#p3133924. Overall Approach to GN : You should always start with a single apron/parkpos and ensure your aircrafts are reaching all thresholds properly. Then and only then you can add more parkings. It is much easier to troubleshoot why routes are wrong with a smaller number of 'options' for aircrafts to travel. Because as I said before AI does not handle 'alternative route' adding more aircrafts or taxiways will not change the way they behave, only make you more frustrated.
Once happy with routes behaviour, you can add more aprons/parkpos (and ideallly re-test after adding each parkpos to ensure your 'flow' remains the same)
Hope this helps
Cheers
Ian