Many real-time applications can tolerate some packet loss, and if packets arrive out-of-order there's no benefit to re-sending them. I'm thinking of real-time games and VoIP, for example. TCP is a bad fit for these use cases. The only thing that works across nearly all routers is UDP.
I'd be more interested in making UDP more secure (and learning more about best practices) than to "avoid using UDP as a transport when possible".