I just worked through a similar problem. It seems that you might need to have a TX wrapped around your read operation. The keys from the finder are returned in one TX, and access is occuring in another TX. This could explain the multiple SELECTS.
Try to have your client create a TX, or better yet, wrap access in to a SSB with it's own TX attribute set.
Yes you're going to need a tx, check the transaction related discussion at the end of the CMP documentation.