i would simply check the entity's velocity along the normal of the collision surface and only play the sound if this velocity is above a certain threshold value. the volume of the sound should also depend on this velocity. i am quite sure that this method would be fast enough even with lots of entities (we aren't talking about thousands of entities anyway because physics would be too slow then). the impact sound effect shouldn't get started continously if the entity just rolls or slides because the velocity along the normal should be 0 (or very close to it) then.
...but i never tested this because i wasn't that interested in sound effects so far!
