Recommended custom post type structure for TV Schedule site?

Normally, the start and end time could be a post meta for your custom post types. But the meta tables aren’t made for search queries, that would slow down your site.

I would use custom tables for this: one for time slots, one for the post relationships.

table slots
id | start (DATETIME) | end (DATETIME) 

table slot_relations
id | slot_id (INT) | post_id (INT)

You don’t need a description for the time, but you might need overlapping time slots, and you will need very fast queries. Setting the slot columns as DATETIME (in contrast to the meta table’s VARCHAR) will help you running custom queries and comparisons.

You will probably have to filter pre_get_posts almost everywhere to add your custom ordering, but that’s something you can easily abstract away.