Fix hang with OOM notification

From the first look, older kernels not getting the OOM notification
closed in some cases.  This is causing the driver.Run() method to hang
forever making a container look like it is still running even though all
processes have died.  I was able to reproduce on 3.13 but others were
not able to repo on 3.17+.

This changes the OOM and chan handling to use a select and not having a
single blocking call waiting on a channel.

Fixes #9699

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>