You might look into the autogroup overlay for OpenLDAP which would populate your cutomerInfoEditor group membership based on a filter rather than using nested group memberships.
You can use nested group memberships in your directory and handle it in code. If your customerInfoEditor only contains one level of nested groups (i.e. its members are groups, but none of those groups have groups as members), you could build a filter based on the membership list of customerInfoEditor.
If the members of customerInfoEditor are the groups "financeUsers", "salesUsers", and "whateverOtherUsers", your filter to determine if a particular user, USERINPUT, should be assigned this role is
(&(uid=USERINPUT)(|(memberOf=financeUsers)(memberOf=salesUsers)(memberOf=whateverOtherUsers))
The | is an or operator. The filter says find a user where ( (uid is the value with which the user authenticated) AND (they are a member of financeUsers OR a member of salesUsers OR a member of whateverOtherUsers) )
Using code to build the or component of the filter allows you to redefine what entitles someone to the customerInfoEditor role without code changes -- add yetAnotherGroupOfUsers as a member of customerInfoEditor and your filter will dynamically change to include that group too.
You might be able to speed the query up a bit by getting the user's fully qualified DN (FQDN) and changing the search base to the user's FQDN. Then the filter would simply be
(|(memberOf=financeUsers)(memberOf=salesUsers)(memberOf=whateverOtherUsers))
In either case, getting 1 record back means they should be assigned the access. 0 means they should not be. And >1 is strange -- I generally throw an error instructing the user to ring up our help desk in this case.
If your role groups, like customerInfoEditor, may have multiple levels of nesting (financeUsers are a member, but financeUsers members are groups like accountsRecievableUsers, accountsPayableUsers, cfoUsers, and some of those groups could even have groups as members) then ... well, personally since I do all of my provisioning automatically ... I'd just add another "add to group" event in my provisioning workflow for all of those groups and not use deeply nested groups. When I add someone to cfoUsers, I'd also add the to customerInfoEditor and the role group would contain only user accounts as members.
But if there's no other alternative, the only thing I know to do is handle the group expansion within your code. As far as I/O goes, it's expensive because you'd have to look at all of the groups of which an individual is a member, check to see what those groups are a member of, check to see what those groups a member of. If you're only dealing with a single role, you could break out of the expansion as soon as the role is found, but if you need to look for multiple role groups ... you'd have to run until you hit the top of the tree and had an expanded list of all groups of which the individual is a direct or indirect member. And track groups you've already expanded to handle loops otherwise A is member of B, B is member of C, C is member of D, D is member of A becomes an infinite expansion loop.