Rework job runner to support ext_job_cache for all functions-- and try to use more clients-- instead of relying on copy-pasting code from master.py :)
Merge pull request #12104 from jacksontj/job_cache

Rework job runner to support ext_job_cache for all functions