Drag copy from tables to tree and reorder tree with different drop types

I’m trying to develop a simple to operate (but complicated to program, sadly) tree view. The view is limited to a depth of 2. The root items are topics, the leaf items are discussion items. The possible topics are provided in one table; the possible discussion items in another.

We start with an empty Agenda and drag in Topics. Topics cannot be reused, so when a topic is dragged in it disappears from the Topics table.

Then we drag discussion items to each Topic. Discussion items can be reused between topics, so they do not disappear from the discussion item table. But they cannot be repeated in a single topic.

Agenda            Topics Table
  Topic 1           Topic 1
    Item A          Topic 2
    Item B          Topic 3
    Item C          Topic 4
  Topic 2
    Item B        Items Table
    Item D          Item A
  Topic 3           Item B
    Item A          Item C
    Item C          Item D
    Item E          Item E
                    Item F

I’ve figured most of this out. Obviously, the Topics in the tree permit children and the Items don’t. A Topic dropped on another Topic becomes a sibling, whether it is being dropped from the Topics table or reordered in the tree. An Item dropped on a Topic becomes a child of that topic unless that Item is already a child, in which case the drop is ignored. A Topic dropped on an Item is ignored. Topics, once used, are removed from the table – this is easy.

QUESTION: How to drop Items without removing them from the Items table? I’ve looked for a setting but can’t find one.

Any examples of something similar out there? Any suggestions for how to approach this?