Reloj Ajedrez

Esto es lo mejor que he logrado. Basicamente tu programa estaba bien salvo por que T1.timer() y T2.timer() deben estar siempre en el loop

#include "Wire.h"        // necesario para mi librería LiquidCrystal 
#include <LiquidCrystal.h>
#include "CountUpDownTimer.h"

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // ( RS, EN, d4, d5, d6, d7)

CountUpDownTimer T1(DOWN); // CuentaAtrasACeroTiempo1
CountUpDownTimer T2(DOWN); // CuentaAtrasACeroTiempo2
const byte pinEq1       = 2; 
const byte pinEq2       = 3;
const byte pinEmpezamos = 4;
const byte pinBuzzer    = 5;
bool inicioLCD = false;

void setup() {
  Serial.begin(115200); 

  pinMode(pinEq1      , INPUT); // BotonEquipo1
  pinMode(pinEq2      , INPUT); // BotonEquipo2
  pinMode(pinEmpezamos, INPUT); // BotonEmpezar
  pinMode(pinBuzzer   , OUTPUT); // Buzzer

  T1.SetTimer(1,0,0); // SetTiempo1HoraTiempo1
  T2.SetTimer(1,0,0); // SetTiempo1HoraTiempo2

  T1.StartTimer(); // EmpezamosTiempo1
  T2.StartTimer(); // EmpezamosTiempo2

  lcd.begin(16, 2); // Fijar el numero de caracteres y de filas
  Serial.begin(9600);
}

void loop() {

  bool eq1, eq2, empezar;
  bool eq1Ant = false, eq2Ant = false, empezarAnt = false;

  T1.Timer();       // LeDamosTiempo1
  T2.Timer();       // LeDamosTiempo2
  eq1     = digitalRead(pinEq1);
  eq2     = digitalRead(pinEq2);
  empezar = digitalRead(pinEmpezamos);

  // Si le damos a empezar iniciamos secuencia
  if (empezar && !empezarAnt){
      T1.PauseTimer();  // PausamosTiempo1
      T2.PauseTimer();  // PausamosTiempo2
      Serial.println("Empezamos!");
      inicioLCD = true;
  }
  empezarAnt = empezar;

// Si se pulsa el pulsador del Equipo 1 y el Equipo 2 a la vez pausamos ambos
  if (eq1 && eq2)   {
      T1.PauseTimer();  
      T2.PauseTimer();
      Serial.println("Eq.1 y 2 pausados");
  }
  
  // -------------------------------------------Tiempo1-------------------------------------------
  // Si se pulsa el pulsador del Equipo1, retomamos la cuenta atras
  if (eq1 && !eq1Ant){ // && !eq2){
      T2.PauseTimer(); // PausamosTiempo2
      T1.ResumeTimer(); // TiempoActual
      //tone(5, 2000);
      Serial.println("Eq.1 timer");
  }
  eq1Ant = eq1;

  // -------------------------------------------Tiempo2-------------------------------------------
  // Si se pulsa el pulsador del Equipo2, retomamos la cuenta atras
  if (eq2 && !eq2Ant){ // && !eq1) { // && !T2.TimeHasChanged() ){
      T1.PauseTimer(); // PausamosTiempo1
      T2.ResumeTimer(); // TiempoActual
      //tone(5, 1000);
      Serial.println("Eq.2 timer");
  }
  eq2Ant = eq2;

  
  // -------------------------------------------Final-------------------------------------------
  // Si alguno llega a 00:00 suena la sirena
  if (T1.TimeCheck(0,0,0) || T2.TimeCheck(0,0,0)) {
      //tone(5, 5000, 10000);
      Serial.println("Partida terminada por tiempo");
  }

  //Actualizamos los mensajes
  // Imprimimos mensajes
  char mensaje[20];
  if (T1.TimeHasChanged() || inicioLCD) { // this prevents the time from being constantly shown.
      
      lcd.setCursor(0,0);
      sprintf(mensaje, "Eq.Verde: %02d:%02d", (int) T1.ShowMinutes(), (int) T1.ShowSeconds()) ;
      Serial.println(mensaje);
      lcd.print(mensaje); // Enviar el mensaje
  }

  if (T2.TimeHasChanged() || inicioLCD) {// this prevents the time from being constantly shown.
      lcd.setCursor(0,1);
      sprintf(mensaje, "Eq. Rojo: %02d:%02d", (int) T2.ShowMinutes(), (int) T2.ShowSeconds()) ;
      lcd.print(mensaje); // Enviar el mensaje
      Serial.println(mensaje);
      inicioLCD = false; // solo 1 vez
  }
}