I disagree with your assessment of the required payments and the necessity to change the event list.
OP doesn't necessarily need to pay for catering--in fact, most every competition in NorCal lacks catering. This year, there will have been San Ramon and Hayward Rubik's Rumble that have catering, and the cost is covered through the caterer charging competitors on-site as they order. This works particularly well, since parents of kids have to pay to eat, too.
OP listed only 6 events (333, 444, 333oh, minx, pyram, clock). I have generated the following schedule:
Code:
Time | Event/Round | Competitors
-------+------------------+-------------
09:00 | Mega Cmb Final | 15
10:00 | 3x3 Round 1 | 75
12:00 | Lunch |
12:45 | 4x4 Cmb Final | 30
14:00 | 3x3 Round 2 | 24
14:30 | Clock Cmb Final | 15
15:00 | Pyra Cmb First | 35
15:45 | OH Cmb Final | 28
16:30 | Pyra Final | 8
17:00 | 3x3 Final | 8
17:30 | Awards |
under these constraints:
Code:
Round | Time | Lag | Total Time
-------+----------+-------+------------
3x3 | 0:40.10 | 1:40 | 1:49:27
4x4 | 1:45.00 | 2:00 | 1:10:19
OH | 0:45.00 | 1:40 | 0:42:18
Mega | 3:16.28 | 3:00 | 0:58:48
Pyra | 0:13.28 | 1:40 | 0:41:18
Pyra F | 0:08.00 | 1:40 | 0:09:00
Clock | 0:45.00 | 2:00 | 0:25:47
3x3 R2 | 0:20.00 | 1:40 | 0:18:00
3x3 R3 | 0:12.00 | 1:40 | 0:11:12
Formulae and definitions:
-------------------------
Total Time = (Time + Lag) * Competitors * Solves / Stations
Time = Expected time between timer start and timer stop
Lag = Expected time between timer stop and timer start
Competitors = Number of competitors
Solves = Number of attempts per competitor in the round
Stations = Number of timing stations
Stations = 8
Solves = 6
All round timeslots are generated by taking the Total Time for the round, rounding up to the next increment of 15 minutes, and making sure each round has at least a half-hour scheduled for it.
Excluding lunch, this gives the competition
1:18:52 of built-in buffer time.
This is very doable, and OP should be able to by-and-large choose their own event list.