In a small saucepan, heat the olive oil. Add the onion and cook over moderate heat until softened, about 5 minutes. Add the garlic and cook until fragrant. Add the lemon and orange juices and simmer for 2 minutes. Add the vinegar. Transfer half of the mojo to a blender and let cool. Refrigerate the remaining mojo.
Meanwhile, in a jar, shake the garlic and onion powders, ground pepper and cumin. Add 2 tablespoons of the dry rub to the mojo in the blender. Add the Worcestershire and 1 tablespoon of salt and puree the marinade.
Put the pork in a resealable 1-gallon plastic bag and add the marinade. Seal the bag, pressing out the air, and refrigerate for at least 8 hours or up to 24 hours, turning occasionally. Bring the pork to room temperature.
Preheat the oven to 350° and set a rack in a roasting pan. Remove the pork from the marinade and pat dry. Rub the meat all over with the remaining dry rub and set it on the rack. Roast for 3 hours, until an instant-read thermometer inserted into the thickest part of the meat registers 150°. Reduce the oven temperature to 275° and roast the meat for about 3 hours longer, until very tender and an instant-read thermometer registers 180°. Remove the roast from the oven and cover with foil; let rest for 30 minutes.
Shred the meat, discarding the bones and excess fat. Serve the roast with the remaining mojo and the Creamy Cilantro-Lime Sauce.