Pat the onions dry and leave them out on a paper towel for 15-20 minutes to dry them out more. Heat the ½ cup vegetable oil in a pan over medium heat and add the onions. Fry the onions for 15 minutes till they are a deep golden brown, without burning them.
Drain the onions out onto a paper towel and set aside.
Combine the yogurt, tomato puree, vegetable oil, ginger, garlic, paprika, cayenne, turmeric, garam masala, 2 tablespoons of the fried onions, and salt in a Ziplock bag. Add the chicken pieces and marinate in the refrigerator for at least two hours, preferably overnight.
In a large stockpot, prepare the rice. Bring 6 cups of water to a roaring boil and add salt, whole spices, and the basmati rice. Cook for 5 minutes and drain, leaving the whole spices in the rice. The rice should be only partially cooked and still raw in the middle. Check doneness by pressing a grain of rice between two fingers.
While the rice is cooking, heat the milk in a small saucepan or in the microwave. Move to a heat-safe bowl and add the saffron strands. Stir and, using the back of the spoon, rub the strands slightly to extract more flavor and color.
Heat a wide sauté pan over medium heat and add the chicken with all the marinade. Cook for 4 minutes on one side, then flip the chicken pieces. Cover and cook for another 3 minutes. When time is up, turn off the heat.
Sprinkle half the fried onions all over the chicken, and then sprinkle all the chopped cilantro and mint on top.
Layer the rice on top of the chicken and then drizzle saffron milk and melted butter all over the rice. Cover and cook on low heat for 20 minutes.
Once the biryani is cooked, move the pan off the hot burner and let it rest for 5-10 minutes.
Garnish with the remaining fried onions. Scoop to serve, making sure to get all the layers.