In the end it turned out to be easier - and more reliable if you want to receive multiple offers - to implement this completely ourselves. No added dependencies anywhere.
Example:
$ sudo pihole-FTL dhcp-discover
Sending DHCPDISCOVER on interface lo ...
Nobody replied to our request on this interface
Sending DHCPDISCOVER on interface eth1 ...
Nobody replied to our request on this interface
Sending DHCPDISCOVER on interface eth2 ...
Received 300 bytes from 192.168.2.10
Offered IP address: 192.168.2.223
Server IP address: 192.168.2.10
Relay-agent IP address: N/A
DHCP options:
Message type: DHCPOFFER
Server identification: 192.168.2.10
Lease time: 86400 (1d 0h 0m 0s)
Renewal time: 43200 (12h 0m 0s)
Rebindung time: 75600 (21h 0m 0s)
Subnet mask: 255.255.255.0
Broadcast address: 192.168.2.255
DNS server 1: 192.168.2.10
Domain name: "lan"
Router 1: 192.168.2.1
--- end of options ---
Sending DHCPDISCOVER on interface lxcbr0
Received 300 bytes from 10.0.3.1
Offered IP address: 10.0.3.16
Server IP address: 10.0.3.1
Relay-agent IP address: N/A
DHCP options:
Message type: DHCPOFFER
Server identification: 10.0.3.1
Lease time: 3600 (1h 0m 0s)
Renewal time: 1800 (30m 0s)
Rebindung time: 3150 (52m 30s)
Subnet mask: 255.255.255.0
Broadcast address: 10.0.3.255
Router 1: 10.0.3.1
DNS server 1: 10.0.3.1
--- end of options ---
The timeout until we wait for offers is currently hard-coded to two seconds.
Please try it yourself!
I am, as always, very interested in your opinion and suggestions for further improvements:
pihole checkout ftl new/dhcp-discover