What I would do:
Don't set their spawn in the sky, instead make a
deathCount objective, and at the beginning of the 'event', set it to 0 for all players. When a player dies, teleport them back to the beginning, then set their
deathCount to 0.
If you are doing a single player map, you could, instead of using beds for spawns, have a button that summons an invisible invincible armor stand, and then use that for the 'resetting' part.
If you are doing this with multiple people on a server, you could also at the beginning of the event, kill all players, then summon an armor stand at each player with a custom name, then use those to set the spawns back.
How to use /scoreboard
First, make the objective:
/scoreboard objectives add abc deathCount
Then, make a clock going to two command blocks.
In the first block, put
/tp @a[score_abc_min=1] <x> <y> <z> (coords of intended spawn)
The second block should have
/scoreboard players set @a abc 0
abc can be replaced with whatever you want
Use a command block close to the middle of the room, (could be on roof or in floor) on a relatively quick timer. Use
/tp @a[rm=?] <x> <y> <z>
to teleport everyone at least
? blocks from the command block to x y z.