Remove a signal that is known to repeat every 4 samples at a known phase i.e. exactly 500 Hz signal in 2000 Hz data
Currently we would employ a Butterworth bandstop of 490-510Hz but this doesn't completely cut-out 500Hz under some conditions


Use a notch filter instead. It will completely remove the 500Hz component and you can adjust the Q to dial in the width vs latency or group delay distortion


  Also if we make the filter too narrow it has a very long latency.


That's unavoidable: the narrower/steeper a filter is in one domain, the wider it is on the other. 


  if a similar/same method is exists to subtract/remove the 500Hz signal from the signal?


Yes, many. For example you can use phase locked loop (PLL) to determine both phase and amplitude of the 500 Hz component and then simply subtract it out of the signal. This will cause NO delay or latency to the remaining signal. If your 500Hz has any type of amplitude or phase drift, the PLL will simply track it and you can adjust the speed of PLL controller to match the drift.

If your 500 Hz noise signal is guaranteed to be EXACTLY a 1/4 of the sample rate, that gets really simple. Just heterodyne it down with a cosine and a sine at 500 Hz, that gives you the real part and the imaginary part. Calculate amplitude and phase, create sine wave and subtract.