The nsd nameserver provides a viable alternative to tinydns. However, there's currently no good replacement for dnscache; most recursive nameservers either include lots of functionality that isn't needed for a basic recursive setup, or are designed for single-purpose use.
It might be interesting to look into using a high-level language such as Python or Perl for this.
PowerDNS Recursor is now a decent free dnscache replacement.