There is no need to do two allocations per kqueue timer. Gather all data needed by the timer callout into the structure and allocate it at once.
Use the structure to preserve the result of timer2sbintime(), to not perform 64bit calculations in callout.
Style.