First of all sorry to interject, I am in no way affiliated with the GeoAdmin/Swisstopo but having recently implemented a similar feature perhaps I might be able to help.
First of all, are you interested in all types of data or only one in particular?
Because by default, SearchService returns feature results of several types (parameter: origins, see , particularly see the paragraph right above examples). I am not aware of a way to retrieve all the elements you need in a single request, but it can be obtained if several are combined.
If you are interested in all of the possible results of the locations SearchService, then you could search for them with it as you showed and then, depending on the origin, either directly query feature resource (see , using the returned featureId and the layer based on the origins documentation) or do a features search first (as far as I know it is required for the origin: gazetteer, because results returned with that origin seem to come from two layers: ch.swisstopo.swissnames3d and ch.bav.haltestellen-oev) before querying the feature resource.
But if you are only interested in addresses then in my opinion a features search on ch.bfs.gebaeude_wohnungs_register layer (or ch.swisstopo.amtliches-gebaeudeadressverzeichnis or both) with a subsequent request to the feature resource might be a cleaner approach.
Hope it helps!