Simple way to determine I/Q phase difference (positive or negative) without using FFT
'... the last one is very sensitive to noise'

They are all sensitive to noise, filtering reduces the noise. Some methods have filtering 'hidden' in them. For instance FFT processes a large amount of data, and then you use just one frequency bin, which is an implicit filter. If you use filtered data for your slope search estimation, then you will be more robust against noise. 

Consider this. When the slope on one channel has the same polarity as the value of the other, the rotation will be in one direction, and when they are opposite polarity, the other.

How do you determine whether two values have the same polarity? Multiply them. A positive result and they are both + or both -, and vice versa. Or do XOR logic on their signs, whichever is quickest for the hardware instructions you have to hand.

So try this. Compute I slope at In by (In-1 - In+1), multiply by Q value Qn, and accumulate the answer. Repeat for subsequent ns as many times as required to reduce your noise to reasonable levels. The sign of the accumulated number indicates the polarity of the rotation.