An interrupt won't necessarily make things faster, it will just make the timing deterministic if you use the interrupt as a "throttle".
By making things deterministic, (i.e. setting your interrupt to have a 1ms "heartbeat") you can create your delay loops so they always have a predictable interval. That way if you add more switches or sensors in code, the delay does not become code dependent on other delays previously instantiated.
We have a similar situation at work where we are checking an IR reflective sensor... on occasion the bottle on the conveyor belt creates a false reflection reading. So on our debounce circuit there are two delays ... one that prevents false triggering and waits after the first trigger of the event, (when the pin goes HIGH), and another that triggers after the pin has gone LOW ... the flow is designed as a "fall-through" so that any one delay does not hold up valuable CPU time so that another delay can be handled in an atomic way.
The Flow chart below only depicts ONE input. The reference to 2ND-SHOT is simply a second ONE-SHOT flag.