I believe the usual pattern used for this sort of circumstance is to have
the client create a #temp table, call the procedure (which is written to insert the results of the select into the #temp table), and then select the results from the #temp table.
This use of the #temp table keeps the results private to the session and current to the session's most recent execution of the procedure.
-bret