The data that you gave are consistent with my guess, namely, that utimens is marking st_ctime for update, but that the update doesn't actually occur until after stat is called (a violation of POSIX).
If my wild guess is right, increasing the nap time could mask the bug, as the update could occur during the nap.
