I spent too much of my time today trying to figure this out, and I think I found a good solution which I will just write here in case others have a similar question in the future.
If you want to share a calendar, the best way to do so is to add people to your existing calendars, which enables them to view (sync onto their phone) and edit the calendar. To do this just open the calendar app and press the button at the bottom middle (calendars), once you see all your calendars just choose the one you want and press the “i” symbol next to it, from there you can easily add a person.
The best solution for the contacts (without having to buy iCloud family storage) is to set up a separate (free) iCloud account and adding said account on all phones you want to sync contacts with (add this account in “password & accounts” but still keep your main private iCloud account on your phone). This way you can use all the features of a family account while being able to share contacts over several different devices with different Apple IDs. (Important: you have to turn off contact sync in your main iCloud account and only have it activated on the sharing account)