As of nop 3.6, I was able to get SmartPost shipping methods to return alongside other options by changing the following:

SetShipmentDetails - Modification
if (_fedexSettings.CarrierServicesOffered != null && _fedexSettings.CarrierServicesOffered.Contains("SMART_POST"))
{
  request.RequestedShipment.ServiceType = RateServiceWebReference.ServiceType.SMART_POST;
  //Smart Post require some additional elements
  request.RequestedShipment.SmartPostDetail = new SmartPostShipmentDetail();
  request.RequestedShipment.SmartPostDetail.Indicia = SmartPostIndiciaType.PARCEL_SELECT;
  request.RequestedShipment.SmartPostDetail.IndiciaSpecified = true;
  //of course, 5185 shuold be configurable
  request.RequestedShipment.SmartPostDetail.HubId = "5185";
}


CreateRateRequest - Modification

Replace:
request.CarrierCodes = new RateServiceWebReference.CarrierCodeType[2];
// Insert the Carriers you would like to see the rates for
request.CarrierCodes[0] = RateServiceWebReference.CarrierCodeType.FDXE;
request.CarrierCodes[1] = RateServiceWebReference.CarrierCodeType.FDXG;


With:
request.CarrierCodes = null;


--
Based on my conversation with FedEx as of the time of this post, CarrierCodes is a legacy feature. It is still required, but only used to limit the returned rates. By setting it to null, you won't filter out SmartPost rates. As for IndiciaSpecified = true, FedEx wasn't receiving the Indicia until I set this value.