Pods 2.5 optimizations work

This is a general PR for all the 2.x-optimizations work done so far by @jamesgol / @pglewis; to ensure we can see a full big picture of the changes. This will make it easier to review everything as it currently is (or becomes) and I can comment on the difference lines.
My intent was to only have it cached long enough so the current process has the data and doesn't have to look it up, but a longer time would be ok but it increases the risk of stale data.  

The problem is that field is doing way more than it should be, it really shouldn't know anything about relationships at all, but that's a major change and has to happen much later.  So I think a hack here is fine as long as it's documented that it needs improvement later