Re-Add Per-Frame Caching in EntityCache (there is more optimization that can be done here)

Only Run __GetBestTargets every x seconds if we have a viable PreferredPrimaryWeaponsTarget already (it hasnt been killed yet...)