Actually, the MODBUS interoperability lab tests for an RTU interframe gap of 3.5 character's' duration at 19200 bps and below, but at 38Kbps and above they only need ~ 1.75milliseconds (I use 2 milliseconds). This is what I have implemented in shipping product and it has passed MODBUS-compliance lab certification with these recommendations, worked through gateways, etc..
What I found to be the simplest code implementation, was to simply run a 1 millisecond free-running timer interrupt (you could choose 2 millisecond on really constrained MCU) that increments a tick count.. Then, in your code where you process a received MB-RTU msg frame to see if it is for you or not, you just grab the tick count when you determine the msg is valid for you. When you have a response ready in queue to send, just grab the current value of the tick counter and compare/subtract the tick count from the "msg is for me" tick count. If the difference is >= the required number of millisecond ticks then your code starts the transmission of the response. Just be sure to handle the rollover of the tick count properly in your checking.