Using a sharp pairing knife, make deep incisions (about ½ inch deep) all over the pork shoulder (including the sides and bottom). This will allow the marinade to seep into the meat.
Add the lime juice, orange juice, 2 tsp oregano, 2 tsp cumin, 1 tsp kosher salt, ½ tsp black pepper and garlic cloves to a blender. Blend until everything is well mixed and liquified. Pour one cup of the marinade into a jar and refrigerate.
Take the remaining salt and rub it all over the pork, including the sides and bottom making sure to get it into the incisions. Place the pork into a resealable plastic bag and pour the remaining sauce all over it. Seal the bag and flip it a few times to make sure that the sauce gets into the incisions. Refrigerate for 8 hours or overnight.
Remove the pork from the refrigerator and allow it to rest at room temperature for about one hour. Preheat the oven to 325 °F.
Remove the pork from the plastic bag and place it into a roasting pan that is just large enough to hold it. Pour the marinade from the bag over the pork and sprinkle it with the remaining ½ tsp oregano, ½ tsp cumin and ¼ tsp black pepper. Place in oven and roast uncovered for about 4-5 hours until the meat is very tender and the internal temperature reaches 180 °F. Pour half of the reserved marinade into a small dish and use it to baste the pork every hour while it's roasting. Reserve the rest of the marinade for later.
Remove the roasting pan from the oven, transfer the roast to a carving board , tent loosely with aluminum foil and allow it to rest for about 15-20 minutes.
In the meantime, add the sliced onions and any remaining pan drippings to a large sauce pan. Sauce the onions over medium heat until they begin to caramelize, about 15-20 minutes.
Slice the roast and add it to the sauce pan with the onions. Pour the remaining ½ cup of the marinade over the pork and onions and mix to combine. Heat for just a few minutes to warm everything through. Remove to a serving plate, garnish with fresh cilantro (if using) and serve immediately.