Yes that's most likely a misunderstanding there - most heuristics I've used were very much deterministic. Non-determinism is evil, that I would agree - but heuristics aren't. As long as you understand they are heuristics and might fail/lead to suboptimal results.
Yes, the network is non-deterministic. The point of a reliable protocol is to make it the outcome deterministic despite any underlying non-determinism. So why include timeouts in your protocol which just adds back the non-determinism?
> Heuristics are evil and should only be used where determinism is infeasible, such as in cache reclamation
are these two things really in conflict? they seem orthogonal, but maybe i’m missing something...