Oh, I'd never use the nominal Teleop 20ms as a timing device. Only if the event/action doesn't make sense without a new driver order. The 20ms certainly isn't guaranteed, and for many teams isn't even close.
Anything I want to do based on a period, I do in Periodic Tasks.
If it's a time critical task, then I'll perform calculations based on a system time check.
If it's a really critical task, then I'll use a Timed Structure loop.
As you say, doing a system time check and calculation would work in Teleop, but the response action is still going to be occurring at wacky time intervals.
You've seen this
Timing is Everything whitepaper before. I suppose I should add a watch on Teleop under different programming/cRIO/DS PC conditions that all contribute to really sloppy times.