Hold that thought... I found some more useful logs I was making and followed the program flow a bit deeper. Higher-up scripts seem to be seeing the correct new IP on time. I dug into some lower-level stuff and found the script that was outputting the incorrect (old) IP was getting it via DNS. The DNS, even though it's local (caching named) must be caching the old IP of the box for a while. I'll have to see where/how I'm updating that entry and either get it to update faster and flush cache, or not use DNS at all (see below).
So there probably is no problem in the dhclient stuff at all, just in where I'm pulling the IP from at a certain point.
Doh!
(If you're curious, I'm using DNS because I am resolving two hosts, one if which is "me" and one which is remote, but I don't know which is which. Or, more precisely, I was trying to avoid adding that complication.)