Building on what Derek suggested (nice tip!), here is some more code around it. Assume that the slot shapes have been selected and then stored in a list, in my example I used testShapes and 'lcv' is the layout cellview database object, then you can identify and delete the overlapped vias like this:
vias = apply('nconc foreach(mapcar shape testShapes dbViaQuery(lcv shape~>bBox )))
The first step build a "flat" list of the list-of-list shapes returned by the foreach-mapcar; the dbViaQuery might return more than one shape. Then map the function dbDeleteObject over this list to delete each via found.
Hopefully this will answer your question?