GetTickCount() is basically useless. What it actually does is return OSTimeGet()*10000 plus the value of a different timer. This other timer only counts to 520 or so, not to 9999 like it should, and it is NOT synchronized with the OSTimeGet() timer, which is why you sometimes have the value decreasing instead of increasing.
Don't bother with GetTickCount() at all, just use OSTimeGet() even though it's a bit crude.
And yes, it runs at 99.9 Hz, or more specifically, 328/32768 Hz.