What is the best way to detect rectangular pulse for AFSK demodulation?
How about you take a short time Fourier transform with window length equal to the granularity with which you want to locate the zero crossing. At a zero crossing the signal will have high frequency components. You could detect those by running a short time Fourier transform on the incoming samples to identify the location of zeros. For ex: if you window 5ms of data and take FFT and see if there are high frequency components of significant magnitude then this would mean that this window contains the zero crossing. If you want, you can go even narrower like 1ms, but you be would loosing on frequency resolution. So, pick an optimum resolution in frqeuency and required zero crossing accuracy in time and window the incoming signal and keep taking the FFTs. You could go for rectangular windows. 

Even if noise is high it will be constant in spectrum (atleast close to it as is theoretically for white nosie) and this should not be a big trouble in FFT domain, unless it is higher compared to signal power itslef.

For just 13 sample long pulse durations use the following emperical algorithm

Maintain two numerical derivate with a reference point x samples apart. Fir ex: consider "sample number" $N_o$, take two derivates between $N_o$, $N_o -x$ call this gradient 1, and second derivative between $N_o$, $N_o + x$, call this gradient 2, take the magnitude of these two gradients, if they are greater than a threshold, usually gradient is close to 90 degree near the  zero crossing, then the point $N_o$ is a good approximation of zero crossing.  $x$, and the threshold can be tuned based on pulse length.