Спасибо за ваши ответы! Оказывается, я был совершенно неправ по поводу того, что это проблема браузера - проблема была на сервере. ASP.NET сериализует запросы того же сеанса, которые требуют состояния сеанса, поэтому в этом случае следующая страница не начала обработку на сервере до тех пор, пока эти запросы, инициированные ajax, не будут завершены.
К сожалению, в этом случае состояние сеанса требуется в обработчике http, который ответил на вызовы ajax. Но доступ только для чтения достаточно хорош, поэтому, пометив обработчик IReadOnlySessionState вместо IRequiresSessionState, блокировки сеанса не удерживаются и проблема устранена.
Надеюсь, эта информация окажется полезной для других.