Как бы ты не изворачивался, либо у тебя получится поддержка только подмножества веб приложений (и очень не эффективное) либо очередной браузер, но зачем, когда есть готовые.
Подключаешь к проекту какой-нибудь браузер, открываешь требуемую ссылку там, мониторишь итог на предмет окончания загрузки (отдельная проблема)...
например штатный компонент .net WebBrowser это древний internetexplorer11 на windows, но при запуске проекта на mono - это будет что то основанное на firefox
этот вариант будет иметь наивысшую производительность, наверное даже лучше selenium, так как это не отдельный браузер а только библиотека с кастрированным функционалом, но не на много (грубо говоря нет поддержки расширений, работы с камерами, уведомлениями и т.п.), так же такой способ проще детектировать со стороны веб приложения, которое борется с автоматизациями