dns: handle simultanous requests- serialize overlapping UDP sends
dns: handle simultanous requests- serialize overlapping UDP sends

Fixes #1285

Running N UDP queries at the same time (to same server) will cause multiple UDP packets being sent on the
associated UDP channel, but we don't enforce the pending send has actually completed (as in been written to wire),
and since seastar sockets cannot handle overlapping sends, this will break the mechanism.

This is because C-ares does not check for non-blocking EAGAIN state for UDP (long standing fixme in C-ares).

Need to serialize UDP sends internally. Done by simply always making UDP send a continuation chain
and thus serialized by design.

v2:
* Simplified solution to an always-future-chain for UDP.
* Added use/release for all send calls across either immediate or continuation
  to be extra paranoid of a dropped socket (from c-ares call).
v3:
* Ensure release in finally
* Add-fast-fail handling
v4:
* Use finally for all UDP continuations, we do not cascade failures.
* Reinitialize UDP future chain root on fast-fail

scylladb/seastar,scylladb/seastar,scylladb/seastar