Con Scanner te basta. BufferedReader se usa más para lectura de archivos ya que provee una amplia API para ello. No entiendo por qué creas un BufferedReader nuevo para cada lectura. Es ineficiente y completamente innecesario.
Saludos.
Código (java) [Seleccionar]
final Scanner READER = new Scanner(System.in);
System.out.println("Ingrese Apellido");
String apellido = READER.netxLine();
System.out.println("Ingrese Nombre");
String nombre = READER.nextLine();
nombre.readLine();
System.out.println("Ingrese Especialidad");
String especialidad = READER.nextLine();
System.out.println("Ingrese Número de Matrícula");
String nroMatricula = READER.nextLine();
Professional newProfessional = new Professional(apellido, nombre, especialidad, nroMatricula);
// agregas el nuevo profesional a la lista
Saludos.