In a shallow bowl large enough to contain all the chicken pieces, combine all the marinade ingredients. Toss to coat well and then set aside to marinate for an hour.
For the crisp fried onions, heat the vegetable oil in a sturdy pan or karahi over a medium heat until hot but not smoking (CAUTION: hot oil can be dangerous. Do not leave unattended.) Add the onions and fry for 10–15 minutes, or until deep golden-brown. Remove with a slotted spoon and drain on a plate lined with kitchen paper. Set aside. Pour off all but about three tablespoons of the oil from the pan. (You can pour the oil off into a jug and set aside for another use.)
Add the whole spices to the pan and fry for one minute. Add the chicken and its marinade, bring to a simmer, then stir in the tomatoes and salt. Simmer over a medium heat for 20 minutes, or until the chicken is cooked through and the sauce is clinging to the chicken (add a splash of water to the pan if it catches on the bottom). It’s important that the sauce is almost dry by this stage and just coating the chicken. Keep it warm on a low heat while you cook the rice.
For the rice, drain the soaked rice and tip into a large pan of boiling, salted (at a rate of one teaspoon per litre of water) water for 5-7 minutes, or until the rice is just tender but still firm. Drain well. Test that the rice is cooked by squeezing a grain between your fingers – it should be soft and break up at the edges, but stay firm in the middle.
Assemble the biryani straight away while the rice is still hot – you are aiming for five layers: rice, chicken, rice, chicken, rice. First pour about three tablespoons of water and half of the ghee into a deep, heavy-based cooking pot or casserole, then spoon in a third of the rice. Sprinkle over about a third of the saffron milk and rosewater, then spread with half of the chicken mixture and a third of the fried onions.
Add another third of the rice and repeat as above, using the rest of the chicken. Top with the remaining rice and splash with the remaining saffron milk and rosewater. Set the remaining fried onions aside for now. Drizzle the remaining ghee around the edges of the rice so that it drips down the inside of the pan.
Cover with a well-fitting lid. Put over a high heat to get the ghee hot and some steam going – lift up the lid to check. As soon as you see steam rising, turn down to a very low heat and cook for 30 minutes.
Spoon out onto a large serving platter and scatter with the rest of the crisp onions and toasted cashews and pistachios. Serve with raita.