I only mentioned the possibility of replacing the upstream oxygen sensor if you wish to try that first for maintenance reasons if it is due for replacement anyway, I have not recommended buying or replacing any other parts at all...
The things I mentioned are possible causes of the code you say is stored; you will need to test these components to determine whether they are causing the problem you re experiencing.
You can check oxygen sensor response with a digital voltmeter. Connect the voltmeter to the signal wire from the oxygen sensor,, warm the engine to operating temperature, and then induce a lean condition by temporarily disconnecting the brake booster hose. Oxygen sensor voltage should drop to near zero. Then, reconnect the hose and spray a shot of aerosol carb cleaner into the engine air intake; oxygen sensor voltage should spike to near 9/10 of a volt from the rich condition. If the sensor responds as described, it is operational.
Measure your thermostat opening temperature with a thermometer. If the engine is not reaching 195 degrees F or if the coolant level is low, it will cause a rich condition and set the code you describe.
you asked about a cat failure; the only way a cat failure can cause this code to store is if the exhaust is blocked to the point of causing low intake manifold vacuum. THe low vacuum level will be read by the MAP sensor as a high engine load condition, which could in theory cause a fuel switching code such as you have to store. I have never actually seen this happen, but it is a possibility. you can easily check for a blocked CAT and resultant low engine vacuum by taking an engine vacuum measurement with a vacuum gauge.
I would suggest NOT buying ANY parts until you have determined the actual cause of the problem through testing. Throwing random parts at a problem is not a very professional approach, and usually results in a lot of unnecessary expense.
What you have to realize is service codes never indicate specific component failures, only what general system or circuit is reading abnormally. You still have to perform manual test procedures to identify the cause of the problem.
Does your Actron tool have the capability of reading and displaying the freeze frame data (frozen snapshot of the vehicle's data stream stored along with the code), or of displaying live engine data on the vehicle? Codes are of somewhat limited diagnostic use, the freeze frame data and live engine data give much more helpful insight into what is actually occurring in the system...