I think this is an possible task, and there are some cheap calculations, which would have a big benefit. I try to explain an algorithm:
1. Calculate path, if no route found remember the points, where signals have blocked the way.
2. Then calculate the path again, but this time don't look for signals or current train direction.
2a. If no path has been found: nice, then there is really no path. There must be a track missing. (*) Or it is just not reachable without changing direction. (**)
2b. If now a path has been found it can have two reasons: signals and/or train direction.
3. Calculate the path with the current train direction.
3a. If found: it must be a signal! Look into the remembered positions of step 1 and compare, which signal(s) have been in the way. (***)
3b. The direction of the target train stop is eventually wrong. We can testing-wise change the direction of the target train stop. If it can be reached its that.
(*) it's an idea here to check the path in the other direction with this algorithm. If found, it's a complex switching. Maybe some roundabouts... If not, there is really no connection. There must be two networks or its a switch, which is not possible to pass. In this case it is eventually a good hint to find a path, which ends in the most near distance from both sides. The endpoints of these two patches are most probably a good hint to look for first.
(**) it could be also the length of the train, but I think this is not taken into account yet.
(***) I think this is the only complex part: if there are more than one, we can test to remove one signal and repeat step 1. If found, then this is it, if not we can remove the second. Etc. until we removed all found signals once. Then we can remove 1 and 2, 1 and 3 etc. (remove the signals in all combinations) until all alternations played through.
Optional: we repeat this alternation-stepping, we remove signal by signal in all combinations, but this time if step 1 finds new signals, we can take them into account and recursively look, which other signals than the first found may block the way.
This algorithm is of course not correct nor finished.