Put rice into a large bowl and cover with water; let soak for 20 minutes. Drain rice and reserve. Heat 2 tbsp. oil in a large pot over medium-high heat. Season lamb with salt and brown, turning occasionally, 8-10 minutes. Using a slotted spoon, transfer lamb to a plate; set aside. Reduce heat to medium, add onions, and cook, stirring, until browned, 12-15 minutes. Return lamb to pot with 2 cups water; reduce heat to medium-low and simmer, covered, until meat is tender, about 1 hour. Using a slotted spoon, transfer lamb to a plate; set aside. Reserve cooking liquid in pot.
Meanwhile, heat remaining oil in a small skillet over medium heat. Add carrots, season with salt, and cook, stirring, until tender, about 20 minutes. Using a slotted spoon, transfer carrots to a plate; set aside. Add raisins; cook until plump, 2-3 minutes. Set raisins aside.
Combine coriander, cinnamon, pepper, cumin, cardamom (if using), and cloves in a bowl. Add rice to reserved pot; stir in half the spices and 3 cups water; season with salt. Bring to a boil, reduce heat to medium-low, and simmer, covered, without stirring, until liquid is just absorbed, 8-10 minutes. Uncover; sprinkle remaining spices over rice. Scatter lamb, carrots, and raisins over rice. Cover; continue to cook until rice is tender, about 25 minutes. Stir rice, lamb, carrots, and raisins together and season with salt and pepper; transfer to a serving platter. Sprinkle with rose water (if using).