Using MATLAB `xcorr()` to Find a Signal Hidden Behind Noise
You're basically doing a bank of hypothesis to find your signal using Matched Filter.

Though you use a slightly different method.

First of all, you should leave the signal in the time domain and calculate the cross correlation or their multiplication at the frequency domain.
Yet, since your signal doesn't have unknown phase (Or delay) multiplication will do (It covers the cross correlation at time zero) -> which is equivalent of what you do at the frequency domain.

Since you're using AWGN the performance depends on the Effective SNR.
The effective SNR is a function of the energy of the signal, variance of the noise and the number of samples.  

If you set the signal and the variance of the noise, just use more samples (Of the Signal -> Equivalent of faster sampling rate).