Make HCs sync/async behaviour configurable via service property "hc.async.cronExpression". This allows operations to decide whether a check should be run synchronously or asynchronously (e.g. could be different for TEST and PROD). For checks that always have to run asynchronously, it simplifies the implementation significantly (see org.apache.sling.hc.samples.impl.AsyncHealthCheckSample from patch).
The logic for registering/deregistering jobs for async HCs is in AsyncHealthCheckExecutor, HealthCheckExecutorImpl has only changed slightly in a way that it retrieves the results from AsyncHealthCheckExecutor for checks configured to be asynchronous.