Randomizing the start location of the flood fill algorithm (conformsToRuleThree) improved that function by 9 seconds.
The last commit was a lie.  I have reverted to using the top-left corner for now.  Changed everything to tuples, and have separated the tuple that tracks the numbers from the tuple that marks them. Gained a minor performance increase of about 7 sceonds.
The seenDict was not being cleared. Not a major concern, but fixed nonetheless.