The getIntersecting functions can be useful, but a frustrating characteristic is that the IDs cannot be filtered. This makes it so you have to "weed out" the objects that don't have the ID you want. Why not just add an optional ID argument?
I also just thought of this: I feel like some getXXXonScreen(id, distance) functions (where XXX is the object type) that grabs the objects of the given type on the screen would be helpful, particularly if there are tons of the object with that ID in the level. This would reduce overhead without causing much damage, since objects that are not on the screen don't usually need to be grabbed anyway. The "distance" variable is to set how far off the screen an object could be and still be found.