The MIG 29 was designed as a low cost fighter to pair with the heavy SU-27. But in this regard it failed. While quite capable, it is not cost effective for what it does.
Once you add that second engine... Price complexity... Though once you're down to 1 engine you have flying deathraps, especially in any number of bad conditions. As soon as the Soviet MOD said 'no' to any more single engine planes that made a light fighter as the 'low' part of a 'low - high' mix kind of redundant. Canada learned the 'single engine' lesson with the CF-104, and we should know better with the F-35.
As far as the Mig-31 goes, and a potential Mig-41 goes, they have a role in a big mostly empty country like Russia. AKA- Go fast and fire lots of long range missiles, particularly at non-fighter targets. AWACS, Bombers, Tankers, other high and fast planes.... There's a lesson there for Canada as well. A fully modernised F-15, or even Rafale would actually be a good fit for the country (especially with areal refuelling). Though even the bigger / newer F-18 Super Hornets would be a better call than the budget crippling low capability F-35. With that huge Soviet radar, and it's huge power requirements, just slapping a new Russian radar and electronics on a Mig-31 makes it a danger to anything that flies. Take a Mig-31, make the minor, cheap, and obvious stealth improvements, maybe with some limited internal weapons bays (and the plethora of external hardpoints), build it from the lower cost end of 'new materials', slap new Russian engines in it, new Russian nose and wing radars and electronics, and call that the Mig-41 and you have an interceptor that will be viable for another 40 years.
edit: given where the Su-34, Su-35, Mig-35, and T-50 are a Mig-41 program would be 'cheap' under the UAC umbrella. And that's not cheap by Western standards, but actually cheap.