The existing implementation didn't work and I do not know why.
Hurd isn't documented to have different behavior for signals on
execl(). The timeouts were not firing, however.
This implementation does work.
Thanks to Friedrich Beckmann for reporting the issue (via Debian
buildd).