We are using ogr2ogr to convert GML to Geopackage v1.2, using a .vrt to enforce a "schema" (reason: the greater control it offers over using a .gfs mapping file (e.g. enforcing nullable fields, mapping the gml ids to something other than gml_id)).
Per GML feature, fields only exist IF they have data. For instance, feature X may have a name and an alternateName but feature Y only has a name (no alternateName). Note: it isn't empty/null, it's just missing altogether.
This trips up ogr2ogr when that field is not provided for a particular feature (e.g. feature Y): ERROR 1: Unable to find source field alternateName
Using a .gfs does not give us this issue, but has the disadvantages mentioned previously.
Ideally, we would be able to let ogr2ogr know that we don't care if the field is found in the source data, just map it anyway (as null or empty), but I can't find any appropriate configuration option.
EDIT - i raised the following issue on the GDAL github https://github.com/OSGeo/gdal/issues/1699