Mix all of the marinade ingredients in a bowl with the mushrooms until combined. Marinate for 30 minutes at room temperature.
Meanwhile, prepare the rice. In a fine mesh sieve, rinse the rice until the water runs mostly clear, about 1 minute. Transfer to a medium bowl and cover with water. Soak rice for at least 30 minutes, up to 4 hours. Once soaked, drain the rice. Bring a large pot with 8 cups of water and mushroom bouillon (you can omit this if you can’t find it, but make sure to generously salt the water) to a boil. Once boiling, add the rice and cook for 4 to 6 minutes, or until the rice tastes “al-dente”. Rice should still be intact but taste almost cooked through; the center should be firm, but not hard. Drain the rice, then toss with 1 tablespoon ghee and set aside.
In a heavy-bottomed 2 1/2 quart dutch oven or pot, heat canola oil to medium-high heat. Add the mushrooms and 1/2 the onions, and fry until they are nicely browned (but not burnt), about 8 to 10 minutes. Turn the heat off, season with salt and pepper, then use a slotted spoon to transfer to a plate and set aside.
Heat the residual oil to medium heat. Add the whole spices until sizzling, then stir in the remaining 1/2 onion. Saute for 5 to 6 minutes until translucent in color, then reduce the heat to low. Add half of the cooked onions to the marinated mushrooms (this will help temper the skyr so it doesn’t curdle) and stir to combine. Add the marinated mushroom/onion mixture to the pan with 1/2 cup water, then bring to a simmer. Cook for 8 to 10 minutes, or until the liquid has thickened to a gravy consistency and there is clear oil separation visible. Remove from the heat and transfer to a bowl. Wipe the pan clean.
In a small bowl, heat saffron and milk in the microwave until warm and milk turns yellow, about 30 seconds. Set aside.
Layer the biryani: Add half of the rice and spread in an even layer in the dutch oven. Top with all of the onion-marinated mushroom gravy and half the cilantro. Dollop with the remaining tablespoon of ghee all over. Layer the remaining half of the rice. Pour the saffron milk all over the rice. Top with the fried mushrooms and onion and the cilantro.
Cook the biryani: Set the pot on the stove and cover with the lid on medium heat. Let cook for 5 minutes, covered at medium heat. Reduce the heat to the lowest setting, then cook for 20 minutes, covered. Finally, turn the heat off, and let sit for 10 minutes, covered. Remove the cover, and fluff the rice with a fork. Serve hot with a dollop of skyr. Note: Part of the biryani experience is keeping the whole spices in the rice; however, they are not meant to be eaten! You can push them aside while serving or eating.