For those who are interested, it seems that Game.getLoopCycle() increments precisely once every 20ms and is not that interesting.
This appears to be a client-side behavior which doesn't sync up to actual game ticks. The utility of using Game.getLoopCycle() *could be* that it gives you the finest resolution as to when the client updates its game state. A related api function, Timing.waitNextFrame(), will allow you to wait until the value returned by Game.getLoopCycle() next increments with minimal overhead. It's pretty neat, but if I imagine correctly that it's the trigger for calls from Timing.waitCondition(), then you've already got a nice interface to access this functionality with Conditions.
I'm currently investigating other methods for measuring the length of a game tick and aligning to the boundary between ticks, but I'm not confident in the accuracy of my current methods. The best solution I've come up with involves packet sniffing and wanders pretty deep into the weeds real quick.
If anyone has any experience with timing ticks, I'd love to hear what you've found.