I'm using the Buchan RPMs (openldap 2.3.39) for RHEL4 and it creates
an /etc/openldap2.3 directory. I also have the base openldap (2.2.x)
rpms installed (originally) and it creates the base /etc/openldap
directory.

After doing an strace, I see that /etc/openldap/ldap.conf is used....
but I want use /etc/openldap2.3/ldap.conf file, how do I switch my
ldap client to look here?

I'm using Buchan's rpms (actually built from srpms) 2.3 on RHEL5 and 2.4
on FC6. Buchan's slapd is actually called slapd2.[3|4], not slapd.
Similarly all stuff that Buchan produces has 2.[3|4] tacked onto it,
including the man pages. If you do a 'strings ldap2.3 | less' on your
rig and look for /etc, you'll see that the default config dirs are built
into it.

My guess is you're running the wrong slapd, even starting the wrong
service. The correct service for you to start is ldap2.3. Also, make
sure that the stuff you have in /etc/sysconfig/ldap2.3 is correct.