Cita: tal vez una solución seria guardar el Recordset en una variable de session

No! es decir... ¿para qué?
Cita: creo que existe una forma de convertir un recordset en una array
Si:
TuArray = TuRecordset.GetRows
Luego de ello podés cerrar y destruir los objetos y accedés a los datos como en cualquier array bidimensional