Publico la solución para quien pueda llegar a tener este mismo problema.
Después de investigar un poco más, encontré que nhibernate cuando ejecuta un stored procedure, por default, realiza un invalidate (evict) de las entidades y colecciones de la second level cache (lo pueden ver en el código fuente que detallaba arriba). Ahora bien, si en el tag
sql-query agregamos
<synchronize table=""> se evita este comportamiento indeseado; es decir, tiene que estar la etiqueta "synchronize" con table="", si no existe, por default "sincroniza" todas las tablas (una feature??, tal vez...)
<sql-query ....>
....
<synchronize table=
""/>
...
</sql-query>
Esta info la encontré al final de este post
https://www.link-intersystems.com/blog/2011/10/08/impact-of-native-sql-queries-on-hibernates-second-level-cache/gracias de todos modos.
Andrés Falcón.