phase shift detection between 2 non-periodic signals
You're thinking "phase shift" when what you really want is the time delay. They're not the same thing.

The FFT will give you the phase angles of the various sinusoidal components that make up your signal, but these don't easily translate into a time delay value.

What you really want is to cross-correlate the signals in the time domain. The location of the peak in the result is the time delay. There is a way to implement cross-correlation using FFT, but I'm not familiar with the details. (See MathEE's answer.)

In any case, if you want to do this in real time, this is a serious amount of DSP, and your Arduino might not be up to the task. Or are you using it only to collect the raw data?