As with many dishes of this type, there are as many ways to cook it as there are cooks - but overall I think you have three things combining to make your rice mushy.
You are over-cooking your rice at the start.
Your burner temperature is too high
Your simmer time is too short.
Basically you're driving off water but not at a pace the rice can settle to its final state, absorbing some of the oil too - or being nicely coated at least.
As a 'first fix' method, I'd start with only 2 mins boil of the rice - some chefs even kill the heat as soon as it boils.
If you have an oven, I'd switch the cook to the oven, in a pot with a well-fitting lid, 170-180° for anything from 1 to 3 hours, depending on how cooked down you want the meat. Personally, I'd go for 3 hours - that means you either need enough practise to get your water level right at the start or check it half way & add more if necessary. Don't stir it during cooking, you'll risk breaking up the rice too much.
If you still want to go with stove top, then I'd invest in a simmer ring [$£€ 5 on eBay etc] so you can spread & reduce the heat getting to the bottom of your pan. This will mean you can leave it longer without risk of it burning.
Lengthening your cook time will improve both the meat & the rice.
It may be worthwhile investigating different rice brands, of course, not all rice is equal.
Another option [you don't mention in the question whether you already do this] is to pre-soak the rice in cold water for 30 mins, then rinse well, before cooking.
Overall, the biryani method relies on the rice first absorbing water as it cooks, but then being infused with the oils from the meat & marinade in the later stages; through this period it will go through a slight drying stage & tend to separate better at the end of cooking.