Проблема решается перекрытием в WebViewClient метода
shouldInterceptRequest(). WebView подставляет куки не во все запросы (в частности при обращении к ресурсам типа картинок, js, css, ... не подставляет), из-за чего имеем описанную выше проблему.
OkHttpClient client = new OkHttpClient();
Request req = new Request.Builder()
.url(url)
.addHeader(HttpHeaders.USER_AGENT, Constants.USER_AGENT_VALUE)
.addHeader(HttpHeaders.COOKIE, cookies)
.build();
Response response = client.newCall(req).execute();
InputStream responseInputStream = response.body().byteStream();
return new WebResourceResponse(null, null, responseInputStream);
У конструктора WebResourceResponse первые два параметра mimeType и encoding, которые мы можем получить из заголовка response. Но в моем случае, чёрт знает по какой причине, если передавать их в конструктор - получаю 400 Bad Request.