Problem solved. Solution below for anybody else with same problem.
I made this change:
from this - ILabelEngineLayerProperties le = new LabelEngineLayerPropertiesClass();
to this - ILabelEngineLayerProperties le = pAnnoLayerProps as ILabelEngineLayerProperties;
And then learned that if I remove the join, I can label on the fly using the selected field from the combobox.
So now I load the combobox in this fashion to include the joined fields and everything works with the join.
pLayer = (IGeoFeatureLayer)pDoc.SelectedLayer;
pfc = pLayer.FeatureClass;
//added this to display joined fields
IDisplayTable pDisplayTable = (IDisplayTable)pLayer;
//create list of field names to pick one to label
//IFields pFields = pfc.Fields;
IFields pFields = pDisplayTable.DisplayTable.Fields;
IField subField;
for (int i = 0; i <= pFields.FieldCount - 1; i++)
{
subField = pFields.Field;
cbFieldNames.Items.Add(subField.Name);
}