Here’s a nice white paper from Valve with diagrams on lag compensation, prediction, authoritative server, etc:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_...
https://developer.valvesoftware.com/wiki/Source_Multiplayer_...
Here is a solution I just submitted: https://www.ietf.org/id/draft-add-ackfreq-to-tcp-00.txt
TL;DR The trick is not to make UDP like TCP, but instead make TCP like UDP.