Performance Tweak 3: Cache certain reverse url lookups

Usually, doing a reverse lookup isn't a problem, but we perform a few thousand, often with the same destination. Django's caching layer is way too heavy for this, so just use a simple dict.

On Interp, this has a ~6% speed improvement