I did a simple test, using %timeit in ipython.   I first timed fetching values from a cache, using the default (LocMemCache).

from django.core.cache import get_cache 
mycache = get_cache('default')
%timeit mycache.get('asdfaaaaaaaaaaaadfasasdfsdafasdf')
10000 loops, best of 3: 24.4 us per loop
mycache.set('asdfaaaaaaaaaaaadfasasdfsdafasdf', 'asdfaaaaaaaaaaaadfasasdfsdafasdf')
%timeit mycache.get('asdfaaaaaaaaaaaadfasasdfsdafasdf')
10000 loops, best of 3: 26.1 us per loop

Then I timed just calculating the key.  

input = encrypt_session_key('test')
%timeit encrypt_session_key(input)
100000 loops, best of 3: 10.1 us per loop

It suggests that we would not get much benefit from using a cache.