Oh, that (waiting for all fingers to be detected) does indeed change how I would approach the scenario, and blew past me in my initial reading.
That all said, even with 100ms cycles I would hardware debounce the inputs, capture the keystrokes with an ISR to set some semaphore variables, and then create a 100ms loop that checks the current value (and resets) those semaphore variables.
Eliminating switch bounce allows far more elegant software handling of the values you're reading, so Ken could turn his attention and development energy towards things like sliding time windows (100ms starting from the first keydown, for example) instead of trying to boil the ocean cancelling bounces.