I bought my XJR in 2011 and it stalled twice on the way home. I thought that it might be because the car hadn't been used for a couple of months and that it would sort itself out. I had the intermittent lumpy running and stalling. I thought it was the MAF sensor so bought some MAF cleaner. Problem came back. Bought a cheap code reader - which was the best thing that I ever bought. Had the same codes as Bill W in his posts ie. 1646 and 1647 (O2 sensors). Garage were reluctant to change them as they thought that it was unlikely that both sensors would go at the same time. So I lived with the problem even though it really put me off the car. Had problems getting car through MOT's. Fuel consumption was bad. In 2013 the car stalled at high speed in lane 3 on the motorway. Car failed MOT on emissions this time last year. So garage replaced both downstream lambda/O2 sensors as I didn't fancy doing the job myself. No problems since and mpg increased by between 25% to 30%.
I think you might have got slightly confused here: The downstream sensors are post-cat and have nothing to do with fuel consumption - they simply provide confirmation to the ECU that the cats are functioning correctly.
It is the upstream sensors which affect consumption, and to which the DTCs P1646/7 refer. I suggest it is probably these that your garage replaced.
My yr 2000 XK8 4.0L has pretty appalling fuel consumption. I can actually watch the fuel gauge dropping on 'in town' runs. I also have a sluggish performance issue. Could my Lambda(s) be responsible? How can I find out and are they easy/expensive to replace?
Lambda probes only affect steady state behaviour i.e. when the throttle has been at a constant position for more than a fixed amount of time, typically 20 seconds.
You can see that happen on a diagnostic machine, when the reported ECU state toggles from open loop to closed loop.
Closed loop is when the lambda values are used to back off the fuelling and increase advance as much as possible whilst keeping the lambda within an acceptable zone for engine longevity.
Dynamic performance is open loop, i.e. it is governed by the fuel and ignition maps in the ECU, and protected by knock detection. Lambda is ignored.
For lots of useful information on engine management I find Dave Walker's articles both readable and helpful:
http://www.emeraldm3d.com/articles/cat/knowledge-zone/