Force update of IP / hostname / clientname relationship

Putting Pi-hole's update frequencies aside:
There could be an alternative to pushing IPv6 PE addresses to Pi-hole.

This would require configuring IPv6 prefix policies for your Windows client machines.

If you are well aware of IPv6 prefix policies and have already tried them unsuccessfully, don't click here

A preliminary warning:
I am not entirely sure if that can be made to work, as I couldn't get it running with Windows 7, and have never bothered retrying it since.

You can view current prefix policies with the following command:

netsh interface ipv6 show prefixpolicies

This will produce an output similar to the following (on W8/10):

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        35      4  ::ffff:0:0/96
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96

This table is used whenever your system tries to determine which of your devices configured source addresses and which of a target server's available destination addresses should be used for communication.
Without going into too much detail, note that a precedence value impacts source address selection, while a label value influences selection of a destination address. In case you are seriously interested, RFC 6724 has all the petty details.

You don't just bump the generic entry for ULA prefixes, because that would apply to remote ULA networks you try to connect to as well. Preferring them over public IPv6 may not be what you want.

You should instead expand the preference table by a supplemental entry for your local ULA prefix (assumed as fd00:1234:5678):

netsh interface ipv6 add prefixpolicy fd00:1234:5678::/48 45 14

If you distribute and/or advertise Pi-hole's ULA address as DNS server, your client's should now prefer to send DNS requests using their ULA addresses.
A big caveat: This did not work for me with Windows 7 because that used PE for ULA prefixes as well.

I've never tested this with Windows10.
Im a bit apprehensive of the possibility that Windows 10 still may enable PE over all IPv6 prefixes, instead of limiting it to publics only, or making it configurable.
(Note that you cannot readily tell this from looking at the IPv6 address alone, you'd need to know if it was temporary or just randomised.)

If that's the case, changing ULA preference won't do anything for you, as the interface identifier would still be temporary.

Instead, you could try to bump IPv4 preference for same level results (i.e. make your client chose IPv over IPv6 even when results are otherwise equally suited otherwise).

netsh interface ipv6 set prefixpolicy ::/96 99 4

If this works, it should make your clients send DNS requests to Pi-hole's IPv4 address instead of IPv6.

In the absence of any ULA prefix, bumping IPv4 would be your only option.
So try this one first if you don't use ULA, or if you've confirmed that Win10 would apply PE to ULA as well.

I haven't done any research on how to fill this into a group policy so you wouldn't have to configure clients individually, and I am also unware of routers supporting RFC 7078 to do so via DHCPv6.