(#21069) refresh the cache of launchd plists on a miss

This refactors `jobsearch` a little and makes it refresh the cache in the case where it cannot find a label.  This should fix the (relatively common!) case where a launchd plist is added with a file resource, then enabled with a service resource.