There’s a meta variable to allow for duplicates, but AFAIK, that only works within one role dependency tree, while your case has two (B and C).
Maybe you can make that work with a role D which depends on B and C, not sure.
It’s possible that our duplicates filter needs a little tweaking, I’ll let James Cammarata reply here, though I will point out that it’s designed that roles with different parameters (i.e. dependencies with different parameters) do need to get re-evaluated.