Not sure these are any better than your brute force, but...
1) Ensure that newly created slots dont overlap any existing ones for a particular team.
In your model define a 'before_save' method that queries the database to find any slots that overlap the one you are trying to insert and if you find them, return false which will cause the save to fail.
2) Quickly retrieve the 'current' slot given a Team and Time.now.
Slot.find(:first, :conditions => ["? BETWEEN start_on AND end_on AND team_id = ?", Time.now, Team.id])