Although the servo sample/update time is 90uS, the encoders are connected to hardware encoder counters, which work at a far higher speed (up to the 1MHz limit, which is over 7300RPM for your motors)
It's those counters that the servo loop reads every 90uS.
What do you mean by goes mad?
Have you implemented soft limits?