gdnsd already has support for a nearly seamless overlapped restart. All startup delays in the new daemon happen while the old is still answering queries, and then new sockets are created with SO_REUSEPORT before stopping the old sockets/daemon. This is what happens by default when using "gdnsd restart".
The SO_REUSEPORT part requires Linux kernel 3.9+ (or BSD). The other caveat is that the overlapped restart isn't systemd-compatible. There's some work in progress on doing things in a vastly more complicated way that will work with systemd, but it's not ready for release yet.
--Brandon