Bien, después de investigar mucho más, encontré la solución.
El código original estaba usando ExecuteReader. Lo he cambiado para ejecutar ExecuteNonQuery.
Paso los mismos parámetros y tipos que hice (2 entradas, 2 salidas, una de las cuales es una cadena, una refcursor).
Cuando se ejecuta ExecuteNonQuery, puedo ver el valor del tercer parámetro (la cadena). entonces hago lo siguiente:
OracleDataReader dr = ((OracleRefCursor)pRefcursor.Value).GetDataReader();
¡Entonces puedo hacer mis bucles habituales con el dr! ¡Felices días!