Pulse the garlic, oregano, thyme, coriander and cumin seeds, bay leaves, 2 tablespoons salt and 1 teaspoon pepper in a food processor to make a thick paste. Trim off all but a thin layer of fat from the pork, then make deep slits all over the roast (about every 2 inches) with a paring knife. Rub the spice paste over the pork and into the slits.
Mix the citrus juices, Worcestershire sauce and olive oil in a large glass bowl. Submerge the pork in the marinade and top with the onions and reserved orange and lemon peels. Cover with plastic wrap and refrigerate at least 8 hours or up to 2 days. Bring to room temperature 1 hour before roasting.
Preheat the oven to 450. Remove the citrus peels from the bowl and refrigerate. Place the pork on a rack in a large roasting pan (reserve the marinade and onions); roast, uncovered, about 1 hour. Add the marinade to the pan and pile the onions on top of the meat. Cover with foil, lower the oven temperature to 350 and roast 2 more hours. Uncover, place the citrus peels around the pork and continue to roast, basting occasionally, until the meat browns and a thermometer inserted into the bottom half registers 190, 1 hour 30 minutes to 2 hours.
Transfer the pork to a cutting board and let rest 10 minutes. Meanwhile, skim any excess fat from the pan juices. Slice the pork and serve with the onion and pan juices. Garnish with citrus peels.