I use blackboard only for the state variables, locations etc which can appear in the engine-provided decorators/tasks. The parenting of the blackboards goes hand in hand with the BT subtrees.
All other variables go inside the controller (or the pawn), whose inheritance works in the usual way (no copies needed.) If you don’t want to use a global list of states, you could keep also the state variables inside the controller and write custom decorators/tasks.
Because the inheritances of the blackboards and other components run in opposite directions, their depths have to be the same and each “layer” of blackboards has to contain everything needed for a given “layer” of BT’s/controllers.