OK, so I figured out my own problem. Basically I needed to add the ca chain to each of the cert files. The cacert.pem file had the entire chain but since the clientcert.pem and the servercert.pem files only had a single cert during the handshake the chains were not presented and so verification failed. Once I appended the chain to both the server and client certs the handshake passed. Thanks for the help. I hope this discussion helps others who have similar problems.
In summary the contents of each of my files is as follows:
servercert.pem --
cert unique to server
child-ca1 cert
caroot cert
clientcert.pem --
cert unique to client
child-ca1 cert
caroot cert
cacert.pem --
child-ca1 cert
caroot cert