WorkQueue optimization: use Rust channels to make push() very often non-blocking, and remove WorkGuard