Yes, CID codes could be passed to the same campaign parameter, though, in the case of CID, you don't have to concatenate multiple parameters, there is only one CID and it should already be structured in a parse-able format.
Meaning that you just need a Data Element to pull the Query Param "cid" and you can pass that directly to your campaign tracker.
The tool you posted is one way of doing your CID, but not necessarily the only way... many companies will have their own customized structure, and to be honest, I don't particularly like the way the tool you posted does things.... if any field isn't used, there is no way to indicate that for parsing out the data:
Now, in this tool, all fields are mandatory except for "Adset Name" and "Ad Name"...
https://www.domain.com/?cid=google:paid_social:CO:something:test:test2
In this case, based on order, you know that test is the Adset name, and test2 is the Ad Name... but what happens if I do this:
https://www.domain.com/?cid=google:paid_social:CO:something:test2
Is "test2" the Adset or the Ad Name? You don't know, there is no way to tell in this case....
You can tell people to add "na" in fields they don't use, but a manual mess up might result in them forgetting... what happens if someone goes rouge and builds the URL without the tool and forgets to add the campaign:
https://www.domain.com/?cid=google:paid_social:CO:test2
Now your "Ad Name" has shifted two spots and will be parsed as the Campaign....
Depending on training and your team, a lot of this risk could be mitigated, or it might turn into a complete mess....
Now, for your statement:
AA is not sufficient by itself for setting up tracking codes. We actually need Adobe Launch.
I don't know what you mean by this? Launch does not "set up" tracking codes, it simply collects the values passed to URLs and sends them to AA. This information could be collected long before "Launch" was a thing, the code just had to be set up by developers in the AppMeasurement files.
Setting up the actual campaign codes is the responsibility of your team, using tools like the one you posted, or managing your own campaign list in Excel or another spreadsheet, or using a service like Accutics or Claravine to manage your campaigns.
For tracking these codes, if you are using CID, you would first set up a Data Element like so:

Then pass this Data Element into your Campaign parameter, I would add this to the Page View rules, but you could add to the analytics extension...
The reason I like to add to the Page View, is that then I am sure that only the page view is setting the values, and any actions are picking up the attributed value (so that I can tell the difference between the instance and the value carried forward much easier.
Now, this will mean that in Adobe, you will see values like:
google:paid_social:CO:something:test:test2
However, you will want to set up classification rules on your Campaign dimension, to parse each of these values out to separate items... hence why I made a big deal about parse-ability, and the fact that if items are left out, or change order, the data will be parsed incorrectly....
You would likely use Regex rules to look at the : as the delimiter, and take the first item as the "source", the second item as the "medium", etc... but again, if an item is missed or the items passed in the incorrect order, then these rules will sort values into the wrong groupings....
This is why you need to make sure that CIDs are created properly by your team.
Here is some info about the Classification Rule Builder:
https://experienceleague.adobe.com/docs/analytics/components/classifications/classifications-rulebuilder/classification-rule-builder.html?lang=en