Quando estava testando os códigos, eu percebi que o paciente não poderia agendar mais uma consulta no mesmo dia, independentemente de ter sido cancelada ou não. Então eu achei que o paciente poderia agendar outra consulta no dia que tiver outra cancelada porque vai que o paciente só queria ter trocado o horário.
Para fazer isso não tem muito mistério, eu só troquei o:
boolean existsByPacienteIdAndDataBetween(Long idPaciente, LocalDateTime primeiroHorario, LocalDateTime ultimoHorario);
por
boolean existsByPacienteIdAndDataBetweenAndMotivoCancelamentoIsNull(Long idPaciente, LocalDateTime primeiroHorario, LocalDateTime ultimoHorario);
no arquivo ConsultaRepository.java e depois fazer a mesma mudança no arquivo ValidadorPacienteSemOutraConsultaNoDia.java.