Instead, I played 19 d6 which was met by 19...Nxd6.
White to play.
Can't black just move the queen after the rooks trade instead of taking the knight? Something like 20...Qb6 or Qh4 (both allow Qxh6 to guard that mate), 21...Be7 or Bd6? I don't think that's great (it feels like the d-pawn trades for a bishop in a lot of the lines, particularly the Qh4 ones), but it's not game-ending.
Edit: Qb6 doesn't work; 21 d6 makes that look foolish. Qh4 seems reasonable though.
Edit 2: And Qh4 gets forked by Ng6--ignore me
Edit 3: What about Qe7 lines? These trade the queen for bishop+knight (mostly through blocking on f7), and I don't see a win if white trades either (Nxe7 guards the Ng6 mates)