Hamsandwich registers callbacks on entity classes, always. RegisterHamFromEntity gets the virtual table from an entity, but still registers the callback on the whole class of that entity. Registering a Ham callback on a single entity is not possible, and you have to do such filtering in your plugin code. Registering from two different entities that have the same class will register two callbacks onto that class, and as such the callback will be called twice. All of this is expected with the design of Hamsandwich.