Remove hyperthreading check on Linux

This has been made obsolete by the thread affinity controls
for thread pools, and in fact gets in the way of managing
affinity directly because of the way we mod the assignment
over the number of detected physical cores.
handle more wakeup edge cases

Do a better job at handling edge cases where we can try to operate
on a job that has been scheduled for deferred free.

We do this by performing more sanity checks for the pending-free state
to avoid enqueuing more work that will likely trigger post-free

Note that this was deployed in concert with setting
$.nbio.max_per_wakeup = 1 to reduce the chances that we try to operate
on a stale view of the event state (the wakeups were across threads).