We do something very similar to what's laid out here. One note on the On-Call stream though. We've found that On-Call can become a catch-all, and force engineers to work in domains they have no familiarity with. It hasn't worked very well for us.
We’ve also tried it and as parent describes it can be a bit problematic as you often have domain specific experts within the team, who are the best to solve particular issues, especially as fires often should be put out quickly.
What you need to do in such case is to check if you can accept a slightly longer fire, refrain yourself from interrupting the expert and see the situation as a learning experience. Often debugging something is the best way to learn.