How do you find signal similarity when one signal has zero values? Correlation alternative?
The Correlator is really just a Maximum Likelihood detector. If your noise is AWGN, (Additive White Gaussian Noise), then the correlator is optimal in the Least-squares sense. This is because a correlator is doing a match filtering with your incoming signal, and in this sense, will only consider DFT bands where SNR is the highest, or rather, only consider DFT bands where your signal energy exists. 


  "This made me wonder if there's an alternative to cross-correlation
  which would work properly for a zero valued signal."


Regarding the second paragraph, the 'signal' you are trying to 'correlate' against, [0 0 0 0 0], has zero energy, so the above would not apply. It does not have to do with its mean (DC band of the DFT is null), it has to do with the fact that it has no energy. (All DFT bands are null). In a special case such as this, then you could perform:

$$
e[n] = \sum_{n=0}^{N-1} |x[n] - y[n]|
$$

where $x[n]$ is your known signal, and $y[n]$ is your given signal. In effect, this is nothing but the L1-norm of the difference of vectors. You would then pick the $y[n]$ vector that minimizes this error. 

(Note that if your 'known signal' is always the zero vector, then this collapses to simply the L1-norm of your given vector. The one with the lowest L1-norm is the one closest to the zero vector).

In contrast with the matched filter, this metric will not suffer if your 'signal' has no energy.