Over on etherboot-developers, there has been discussion about encoding a description of the available NICs in the DHCP request so that an appropriate image can be chained. This encodes the PCI IDs (and, IIRC some ISA card names).
It would be great to have a more general parseable hardware inventory available via DHCP (which can neatly encapsulate options for this kind of thing). So, whatever kind of structure you end up with, consider how a more general purpose tree fits in and how it can be flattened into DHCP encapsulated options.