KOER codes can't be "old" codes as they represent faults that occur during the test (in other words -- KOER codes aren't stored like memory codes). I would expect a 212 to be a continuous memory (CM) code rather than a KOEO code and will assume that you are not making a distinction between the two types of code. 122 could be either KOEO or CM, and it will be real useful to know which. To distinguish between KOEO and CM codes, KOEO codes are output at the start of the KOEO test before the separator pulse, CM codes are output after the separator pulse. That said, some specific comments on each code.
KOER 116 -- Usually this is a result of running the KOER test on a cold engine. Computer expects to see the engine near operating temperature for the KOER test.
KOER 538 -- Another operator error code. Almost always this code is because the operator neglected or missed the "goose" test portion of the KOER test.
KOER 172 -- Indicates a fault in the O2 sensor circuit. This code can easily be set by running the test on a cold engine (O2 sensor doesn't work until it warms up to something like 600 F).
Before spending too much time worrying about the KOER codes, I would suggest determining if the 122 is KOEO or CM. The normal diagnostic sequence is to resolve KOEO codes, then KOER codes, the CM codes.
I expect the 212 is the real cause of your troubles. Does the engine actually stall when it acts up, or does it continue to run while the tach reads 0? The fact that the problem seems to be intermittent leads me to believe you have a loose connection somewhere. Maybe the crankshaft position sensor circuit or one of the wires between the ignition module and the EEC-IV computer.