There is no corruption. What happens is that back-bdb, when returning the entry from the cache, correctly locates it based on the indexed attrs used in the filter, but at some point decides that the entry is outside the scope of your search:
Aug 5 16:44:22 work slapd[17541]: bdb_search: 87 scope not okay
This should not happen, since your search is performed with exactly the same parameters used for the original one, and the scope is 1 (onelevel).
I wonder what happens there. Could you walk through the failing request with a debugger, and print some values? I'd like to see, from within bdb_search(), line 780 of back-bdb/search.c of re23, the value of
op->o_request->oq_search
base
*ei->ei_parent
p.