Rapaz, este é um assunto que parece fácil, mas tem muita complexidade envolvida. Eu vou deixar aqui algumas observações para você ponderar sobre o assunto.
na minha cabeça vem a opção de cadastrar todas as data do ano,e criar horarios fixos de 1h em 1h
Eu não faria isso, pois deixa o sistema muito inflexível. O que acontece se a regra de negócios mudar? E se você tiver que abrir algumas exceções?
Eu acho que vai ajudar se você pensar no conceito matemático de intervalos.
Pense assim: um agendamento é um intervalo contendo a data, hora e minuto do início e do fim. Então, você pode apresentar para o usuário um calendário com os agendamentos (intervalos) reservados.
Pensar em intervalos também vai ajudar na hora de detectar conflitos, pois basta verificar os intervalos que se sobrepõem.
Espero ter ajudado.