The whole "choose a doomed exit at random" business is busted
From discussion on #3296 (moved):
If we ever hit the "doomed exit at random" message, every exit needs to have n_supported == -1. So if we seeing that one, not only is it hopeless to build a circuit to the chosen exit for your predicted port; it is also hopeless to try to build a circuit at all, I think.
Arma says: "We're launching a new circuit, repeatedly, when we really ought to be telling the stream to fail. This whole 'doomed exit' thing was supposed to improve our robustness during edge cases. But I think it just leads to sadness."