net: SO_REUSEPORT support
The problem with SO_REUSEPORT is, that we can't bind to sockets after the threads are started (=after the privileges are dropped), but we also shouldn't create a socket per interface per thread, as this could lead to more lock contention with more interfaces than half of the cores. This calls for some intelligent distribution of the sockets & possible SO_REUSEPORT duplication of some sockets to evenly distribute interfaces between threads. TLDR; we want to have roughly as many UDP sockets as there are threads, not more and not less.