Looked into it and the name caching daemon is not running. Got all the answers I needed here: alt.os.linux.redhat: Re: DNS cache on a RH9 system?. Also found a separate package called dnscache. And a HOWTO for bind to create a local DNS cache on your workstation or server. Simply starting nscd and editing nscd.conf seems sufficient for me now.
BTW, here is my updated /etc/nscd.conf. If anyone has more pointers, please comment.
# use 1-10 for more verbose debugging into log
# 3 minimum, 5 default
# 32 is default
# restart intervals may fail if non-root
# user granted to check nscd stats using 'nscd -g'
# 5 is default
# restart periodically
# restart every 4 hrs, default is 1 hour
enable-cache passwd no
enable-cache group no
enable-cache hosts yes
# default in sec; prune hits after this long
positive-time-to-live hosts 3600
# default in sec; prune misses after this long
negative-time-to-live hosts 20
# entries in hash table, default 211, must be prime!
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
# 16 MiB in bytes
#max-db-size hosts 16777216
Update: one more important thing, the suggested-size is the size of the hash table. Hashing works well if your table is sparsely populated. I.e. your table should be larger than the actual number of entries it will have. So if you're caching 20 web server on the intranet, the default is fine. If you are caching 3000 IMAP userids and password (see this example), it needs to be a large prime number about 5-10 larger than the 3000 userids.