Got lucky and did part 2 within about 10 minutes of finishing part 1.
Another spoiler just in case you didn't want to see the magic of Day 20 part 2.
Hacked my code from part 1 to stop when it met the condition for part 2, saw it just kept running so knew something was up and killed it.
Looked at what fed into the `rt` module, saw it was a single conjunction module.
Looked at what fed into that module, saw there were just 4 inputs to this conjunction module.
Knowing that all 4 of the inputs had to be high at the same time for this node to output a high I adapted my part2 break code from above to output the button count when each of those 4 inputs sent a high pulse.
Got 4 numbers somewhere around 4000. Also saw they were repeating on exact multiples of those numbers, so knew CRT wasn't going to be required.
Ran `factor` on the command line and saw they were all prime, so no need to do LCM. Even better.
Multiplied them together and submitted them as my answer and, lo and behold, it was correct.
Only then did I go digging as to why, and worked out what was going on and why the above worked.