A ver si lo estás haciendo como lo tenía planeado:
char mensaje[65];
Esto es una variable global.
mensaje[BT.readBytesUntil('\r', mensaje, BT.available() < sizeof(mensaje) - 1 ? BT.available() : sizeof(mensaje) - 1)] = 0;
BT.flush()
Esto va al momento de verificar la entrada, después de if (BT.available()).
display.println(mensaje);
Esto va cuando ya decidas imprimir el mensaje recibido.
PD: antes del proceso de lectura podrías colocar un pequeño retraso. Posiblemente la velocidad del puerto es tan baja que ni llega el siguiente caracter cuando ya terminó.