Tinha em mente a possibilidade de resolver com LEFT JOIN, mas gostaria de saber se a maneira que cheguei até a resposta também seria adequada. Usei desta forma para evitar o LEFT JOIN, que ainda não havia sido utilizado.
SELECT A.NOME FROM ALUNO A WHERE A.NOME NOT IN (SELECT DISTINCT A.NOME FROM ALUNO A JOIN MATRICULA M ON M.aluno_id = A.id AND M.data BETWEEN GETDATE() - 45 AND GETDATE());
Obs: como as datas já são "antigas", todos os dezesseis alunos serão retornados.