Parece que, al menos por el momento, establecer search_path está fuera del alcance de jOOQ. Podríamos, en teoría, usar las migraciones de Java en Flyway y forzar que todas las referencias dentro de una función tengan esquemas explícitos, pero eso suena bastante doloroso. Lo que nos deja configurando la ruta de búsqueda manualmente, potencialmente agregándola a nuestra gestión de transacciones, o escribiendo un ConnectionProvider más inteligente.
Tenemos un modelo bastante estricto de una consulta por transacción en nuestra aplicación, por lo que en realidad no existe ninguna gestión de transacciones para agregar la consulta "set search_path =...". La solución ConnectionProvider parece ser nuestra mejor opción.
Ya tenemos una implementación personalizada de ConnectionProvider para la agrupación de conexiones, por lo que no fue una molestia demasiado grande agregar la lógica (dada arriba al final de la pregunta) para configurar search_path. Podríamos hacerlo más eficaz decorando la conexión con algo que recordara cuál es su ruta_de_búsqueda actual configurada y anteponiendo "establecer ruta_de_búsqueda =...;" al frente de cualquier declaración antes de que salga por la puerta si es necesario. Ya estamos viendo un impacto en el rendimiento al configurar search_path en cada solicitud, por lo que es solo cuestión de tiempo antes de que esto se convierta en una necesidad. Bueno, eso o volver al dolor de nuestra antigua capa de acceso a la base de datos propietaria.
Como mínimo, no aceptaré esto como la respuesta hasta que escriba y abra el código fuente de conexión pooling/search_path configuración ConnectionProvider, con la esperanza de que alguien más encuentre una solución mejor antes de que yo lo haga.