Preheat the oven to 425°F Pour the water into a roasting pan, add the lime leaves and then the salmon. Cover the pan with foil, put in the oven and cook for about 15 minutes, by which time the salmon should be tender. Remove the pan from the oven and drain the liquid off into a pitcher. Keep the fish warm simply by replacing the foil on the pan.
Melt the butter in a wide, heavy saucepan that has a tight-fitting lid, and add the oil to stop the butter burning. Soften the onion in the pan and add the spices, then keep cooking till the onion is slightly translucent and suffused with soft perfume of the spices. Add the rice and stir with a wooden spoon so that it's all well coated. There's not enough onion to give a heavy coating: just make sure the rice is fragrantly slicked.
Pour in the reserved liquid from the pitcher, about 2 1/4 cups, and stir before covering with the lid and cooking gently for 15 minutes.
At the end of the cooking time, when the rice is tender and has lost all chalkiness, turn off the heat, remove the lid, cover the pan with a dish towel and then replace the lid. This will help absorb any extra moisture from the rice. It is also the best way to let the rice stand without getting sticky or cold.
Just before you want to eat, drain off any extra liquid that's collected in the dish with the salmon, then flake the fish with a fork. Add to it the rice, egg, cilantro, lime juice and a drop or 2 of fish sauce. Stir gently to mix (use a couple of wooden paddles or spatulas) and taste to see if you want any more lime juice or fish sauce. Sprinkle over the zest from the 2 juiced halves of the lime and serve. You can garnish with lime segments and a small handful of freshly chopped cilantro.