The solution you mentioned should be fine. By default games run at 60 FPS, so will be doing collision checks 60 times a second. If you do a collision check every 0.5 seconds it will be 30 times faster. Even if you do a collision check every 0.1 seconds, it will be 6 times faster, and fairly unlikely to miss any collisions providing the objects are relatively slow moving.
If possible, you should also use additional conditions to filter down the list of objects being checked. E.g.:
+ Sprite: is overlapping Block
+ Sprite: is moving
In this case it collision checks every Sprite, since it's the first condition, then of those that are overlapping it filters down to just the moving instances. The instances that are not moving had an unnecessary collision check. The other way round:
+ Sprite: is moving
+ Sprite: is overlapping Block
This first picks only the moving Sprites, then of those, runs a collision check. This can save a huge amount of collision checks if most of the Sprite objects are not moving.