So I ended up creating a CleanableDecal blueprint, which contains a blueprint, and a collision box.
I created a custom trace channel called “CleanTrace” and the collision box blocks the CleanTrace.
There is an event called “Clean” inside of the CleanableDecal
The cleaning item itself does a single line trace.
Then it also does a multi channel sphere trace at the impact location of the initial line trace with the CleanTrace trace channel selected. I then iterate through the array and cast the hit object to the CleanableDecal object, from which I run the “Clean” event which does visual/logic stuff before destroying the actor.
It still doesn’t really resolve the question, but if anybody is wondering…that is what I ended up doing for now.