Push-Button Voltage Spike (not debouncing)
Although determining and eliminating the true cause of the interference (because that's what probably is, since it happens rarely, as you say) should be better for an high reliability system, it could be useful to add also some "strong" software debouncing routine.

If those "spikes" are short in duration, say less than 5-10ms, then design the button-reading routine so that it acknowledges a button-press only if it lasts at least, say, 100ms (if those buttons are meant to be pressed by humans, requiring a 100ms press is not going to degrade the "user interface" perceived responsiveness).

In this way you could get rid of the relays, which are bulky, costly and power-hungry (assuming you need a low-power design).