I posted more info about the ECUs on the Toyota Nation forum earlier today.... but since you asked about ECUs from a salvage yard, I'll address that here. Yes, you can get one from a salvage yard, you would need part number 89661–08081 or 89661–08082. 89661–08082 is the very latest version of it, but 89661–08081 should have the cat update too. The biggest problem in getting a used ECU is finding one first! The next issue, is making it work in your Sienna. If your Sienna does not have an immobilizer, and the salvaged Sienna also does not have an immobilizer, then you just plug it in and go. If the salvaged ECU came out of a Sienna without an immobilizer, yet your Sienna has one, you have to program the keys in when you install it. There is a procedure to do this. I didn't have to do it on mine as I do not have an immobilizer. A locksmith might help with that if needed. It gets really tricky if the salvaged ECU came out of a Sienna with an immobilizer. In that case you have to reprogram the 93C56 chip in the ECU back to a "virgin" state. This is not rocket science, but you have to have a method to reprogram that chip. You usually have to remove it from the motherboard first to program it. This requires a soldering iron with a fine point and a desoldering tool. Then you attach an SOIC8 clip to it and download the new data to it. It is a tiny surface mount chip with 8 pins. It only holds 256 bytes of transponder codes from the keys of the salvaged Sienna. I have published the values for what it took for my 2001 Sienna somewhere on the forum. But if you want to go that route, I can find and post them again.
To tell if you have an immobilizer, look at your keys. If a fully metal key will start the car, it does not have an immobilizer. If the key has a plastic cover with an embedded transponder then you do have the immobilizer. I think there might be a red dot on it where the transponder slides into the plastic. I don't have one to look at however.
The A/F sensors have a code for the heater circuit failure which is separate from the other Cat system codes. However, they can get "lazy" with age. There is a resistance check that can be performed. But it probably would have thrown the code if that had already failed.