VID-2077 Treat negative caching differently

When there are no results, cache for a shorter TTL or zero TTL.

The rational for zero TTL on getDetails is that its called internally, and many places that call it also cache the results of the set.  On things that return data to an external client, the no result cache is minimal, currently 5min.

https://wikia-inc.atlassian.net/browse/VID-2077
There's actually a lot more repeated logic than this if you look up and down a few lines.  Each of these methods could probably call a more generic method and I'd rather pull out that, but I don't want to increase the scope of this change set.