v3: Support distinct descriptor mode
Onionbalance for v3 onions does not support distinct descriptor mode right now, which means that it's currently restricted to a limit of 8 backend instances.
Here is how distinct descriptor mode should work:
Onionbalance should accept any number of backend instances. Onionbalance should calculate how many HS descriptors are needed to fit those backend instances (let's say N subdescriptors are needed) Onionbalance should calculate a descriptor publish schedule so that all those N subdescriptors are published at regular intervals. Onionbalance should continue updating and re-uploading its subdescriptors as normal.
There are other possible shortcuts and optimizations that we could take but this is the basic logic here. Also, note that it's important the subdescriptors are published with optimal gaps between them so that clients will have an equal chance of reaching each backend instance.
(Moved from https://github.com/asn-d6/onionbalance/issues/11)