Haven't tested it yet, but decided to go with an IDDF style solver. Should always find shortest winning path, otherwise keeps going until all paths resolve in death, up to a fixed cap.
IDDF is working great at finding death paths. I'm not convinced win paths work as well, need to devise some simple(r) tests. I also need to do some branch pruning. I was thinking of using a depth/dest/route death foldup method to prune, so that successive runs of an IDDF do not rediscover terminal branches.