We recently ran into this problem. The expedient way to fix it is to replace the netcfg binary in the initrd with one compiled using the following patch.
--- dhcp.c 2013-01-13 08:23:24.000000000 -0500 +++ ../dhcp.c 2013-05-21 14:25:55.613957486 -0400 @@ -591,7 +591,7 @@ preseed_hostname_from_fqdn(client, buf); } - if (netcfg_get_hostname (client, "netcfg/get_hostname", hostname, 1)) { + if (netcfg_get_hostname (client, "netcfg/get_hostname", hostname, !have_domain)) { /* * Going back to POLL wouldn't make much sense. * However, it does make sense to go to the retry