Great question. Numbered lists take a while to get used to. Short answer: when you use FINDITEM on a numbered list you look up the ITEM by referring to the CODE, not the display name.
Longer answer: Example.
In this case we have a numbered list with a code and display name.
Only the line item using code finds the item
Even Longer Answer:
When you have a child branch that has two parents, you have a couple of options. The first is to create an entirely different structured list. Problem with that is that you have to keep the lists in sync. The other options is to create a smart code for the items, something like CODE = PARENT | CHILD, like 1234 | 999999. Then you can parse the code in a calculations module to create the hierarchy dynamically.
I assume your staging list with hierarchy is numbered list since you have the same items/products that roll up to the different parent(s). In this case, as @JaredDolich mentioned, find-item with code should work not with the display name.