The short answer is that it hasn't been built out. It could/would be "achieved through coding", but I don't think it would be done "easily". The issue is that there are a number of places where the assumption is made that there's only one value per field per campaign (or any non-contact entity). You'd need to take care of all of those situations.
If you were to do so, you'd end up hacking core CiviCRM considerably, so you'd have to maintain it from upgrade to upgrade.
For those reasons, it would be best done as an improvement that gets incorporated into a future version of CiviCRM. It would probably require some time and/or money to get it done. You might contact someone on the CiviCRM core team to discuss some options. There are ways you can hire them to build a feature for you, or if you have more time than money, you can write the code and they can help you do it well.