Instead of using the alarm_timer thread we use our own timer thread that uses a kernel semaphore on Nova. On all other platforms a timer connection and trigger_once is used. Fixes #1727.