работа с модальными окнами в вебдрайвере не очень легкая, там много чего не раализовано
сейчас работать с модальными окнами можно только IExplorer
на счет обработки при клике, я предлагаю вам сделать второй вариант, который вы предложили и замерять количество времени ухдящую на эту операцию через разницу между прохождением с и без этой реализации
также можно, как вариант подключить AutoIT, который будет постоянно висеть при прогоне ваших тестов, и как только будет появляться модальное окно сразу же будет его закрывать.
Я поддерживаю вариант с AutoIT в отдельном процессе.
Либо можно повесить такой обработчик в отдельный поток (Thread). А экземпляр драйвера можно будет шарить через static переменную. Со многопоточностью обычно бывает больше мороки, но зато она дает полный контроль над происходящим.
для таких вещей мы на .Net используем White Framework или MS UI Automation. Второй дружит с IE как и в принципе со всем в Win OS.
Если рассматривать ожидание диалога в отдельном потоке:
По-моему при методе IWebElem.Click будет возникать эксепшен, т.к. скрытый элемент уже на странице, а хэндлер диалоговых окон скорее всего диалог ещё не успеет закрыть.