binding state free does not mean that the lease is not in use. A binding state statement declares the lease's binding state. When the DHCP server is not configured to use the failover protocol, a lease's binding state will be either active or free. The failover protocol adds some additional transitional states, as well as the backup state, which indicates that the lease is available for allocation by the failover secondary.
Your best approach is to reduce the lease duration time.
The DHCP client will try to establish a new lease if that client is still active, so this approach works best, if you don't have more address space to allocate.
Or you could allocate more address space, since it is free and cheap (when you are using NAT, that is).
Have a look at DHCPstatus. It is available on SourceForge and elsewhere. Consists of Perl scripts which parse dhcpd.conf and dhcpd.leases and displays status information, including the number of IP addresses in the dynamic pool that are free.