Dear Paul.
You can assign multiple host blocks for the same NIC, using a fixed-address directive in one but not in other. dhcpd will try for the best match. If the request arrives from subnet-B, and the fixed address is on that net, then that's the block that gets used. Otherwise, the less specific block will be used. E.g.,
host myhost { hardware ethernet 11:22:33:44:55:66; fixed-address 172.16.1.1;
^^ modified
} host myhost-roam { hardware ethernet 11:22:33:44:55:66; }
Hmm, that does not really work on two different subnets. I have tried to add a host declaration with fixed-address on the 'static' Subnet B and one on the dynamic Subnet A with just the MAC address and ddns-domain-name.
The client won't obtain an IP address on subnet A unless I add a fixed-address declaration to it, too.
Marcus