Ninguno
Si desea almacenar en caché los conjuntos de resultados bajo su propio control, no puede usar tablas temporales de ningún tipo. Debe usar tablas de usuario ordinarias, almacenadas en tempdb o incluso tener su propia base de datos de caché de conjuntos de resultados.
Las tablas temporales, bot #local y ##shared tienen un tiempo de vida controlado por las conexiones. Si su aplicación se desconecta, la tabla temporal se elimina y esto no funciona bien con lo que describe.
El verdadero problema será llenar estos conjuntos de resultados almacenados en caché bajo ejecuciones simultáneas sin mezclar las cosas (terminar con conjuntos de resultados que contienen elementos duplicados de ejecuciones de informes simultáneas que ambos creían que eran la 'primera' ejecución).
Como nota al margen, SQL Server Reporting Services ya lo hace de manera inmediata. Puede almacenar en caché y compartir conjuntos de datos, puede almacenar en caché y compartir informes, ya funciona y se probó para usted.