If you have a lock-step game, that means that every packet MUST be delivered, intact and executed in order. Otherwise lockstep can not continue. This means that even if you go for UDP, you will still have to reinvent the wheel of TCP by yourself (guaranteed sequence, guaranteed delivery, etc.). I would not want to spend my time on this instead of coding the actual game.
Better go for TCP and keep your code simpler. Let the proven technology take care of deliveries. (and turn off packet batching, which is on by default in many implementations. E.g. in Overbyte that is achieved by setting [wsoTcpNoDelay] // Send packets ASAP (disables Nagle's algorithm))
As for mitigating lag - do the client-side confirmation of players commands immediately (so player has feedback) and do the actual command once other peers accept it - that lag won't be very noticeable.
P.S. Above said based on our own RTS experience with up to 12 players on a map, running up to 30 ticks/second.