Season shanks with salt. In a small bowl, combine cinnamon, nutmeg, cardamom, black pepper and turmeric. Sprinkle mixture over shanks and rub in. Wrap shanks in plastic wrap and refrigerate 8 hours or overnight.
In a large Dutch oven over medium-high heat, add ½ inch of oil and heat until shimmering. Working in batches, add lamb shanks and cook, turning frequently, 5 minutes or until browned all over. Transfer to a plate and repeat with remaining shanks.
Meanwhile, in a small bowl combine saffron, lime juice and ½ cup warm water. Set aside.
Preheat oven to 350 degrees.
Discard all but 2 tbsp oil from the Dutch oven. Over medium heat add onion and cook, stirring often, 7 to 9 minutes or until softened and lightly browned. Season onion with salt. Stir in zest of 1 lime, orange zest, thyme. bay leaves and saffron mixture. Arrange shanks in the Dutch oven and pour in broth. Heating until boiling.
Cover pot and bake for about 1 ½ hours or until an instant-read thermometer registers 160° when inserted into the thickest part of the shank for medium and meat is beginning to fall off the bone.
Transfer shanks to a large shallow dish and cover with foil. Strain liquid through a fine-mesh sieve into a small saucepan. Discard onions, thyme and bay leaves. Skim fat from liquids. Season to taste with salt. Cook juices over medium heat until warmed through.
Meanwhile, remove lamb from bones and break into large chunks. Discard bones. Transfer lamb to individual wide serving bowls. Ladle juices into bowls. Serve garnished with parsley and dill.