I wasn't completely ignorant of the above at the time, but also made an error in judgment in this particular game that the rooks would be able to compensate by operating down the central files. This turned out not to be the case, as by move 22 it's clear that the rooks have nowhere to go and cannot penetrate - until White blunders by snatching a pawn and allowing a rook fork on the second rank.
As a secondary lesson, this game pointed out a consistent thought process error, which was Black's failure to advance the g-pawn (on two different occasions) to attack and trap the White knight. Black simply failed to even consider the possibility of a g-pawn advance, based on the "general principles" of not making weakening pawn moves in front of the king. This is another example of where using CCT (Checks, Captures and Threats) would have resulted in finding the correct candidate move (the threat to trap the knight), which was worth far more than the resulting positional weakness.