In a small saucepan, melt the ghee with the garlic, 4 tsp. garam masala, the ginger, paprika and 1 tsp. salt over medium-low heat. Let cool. (Can be made up to 2 days ahead; cover and refrigerate.)
Preheat the oven to 400°. Carefully slide your fingers between the skin and the breast meat of the turkey. Spread as much of the ghee mixture under the skin as you can. Spread any remaining ghee mixture on the outside of the turkey. Using kitchen twine, tie the legs together at their ends. Tuck the wings behind the back of the turkey, if desired. Place the turkey, breast side up, on a rack in a roasting pan.
Roast the turkey for 1 hour. Baste, then lower the oven temperature to 350° and continue roasting, basting every 20 minutes. Roast until the skin is browned and an instant-read thermometer inserted into the thigh registers 155°, 1 hour to 1 hour and 20 minutes more. Tent the turkey with foil and let rest for 30 minutes.
Meanwhile, make the gravy. In a large saucepan, cook the shallot in the butter over medium heat until soft, 3 to 4 minutes. Stir in 1 tsp. pepper and the remaining 1 tsp. garam masala. Cook, stirring constantly, for 1 minute. Stir in the flour; cook, stirring, until the mixture turns light brown, about 2 minutes.
Whisk in 1/2 cup broth, stirring quickly to create a paste. Slowly pour in the remaining 2 cups broth, whisking constantly to keep the gravy smooth. Increase the heat and bring to a boil, then lower the heat and simmer, stirring often, until thickened, about 5 minutes; season with salt and pepper. Serve the gravy with the turkey.