There is a known issue with using sp_setapprole with cookie like you do. There is a memory leak in the TokenAndPermStore. I have not heard about that causing excessive execution times, but that would not be unlikely.
You can run this query, to see if you are a victim to the leak:
SELECT TOP 15
[type] AS [Memory Clerk]
,CONVERT(DECIMAL(16,3),SUM(pages_kb) / 1024.0) AS [Memory Usage(MB)]
FROM sys.dm_os_memory_clerks WITH (NOLOCK)
GROUP BY [type]
ORDER BY sum(pages_kb) DESC
Look for USERSTORE_TOKENPERM.
To clear it, try
DBCC FREESYSTEMCACHE('TokenAndPermUserStore')
Re-run the query above to see that it had effect.