Genesis, your avatar is a bit disturbing when I consider your last sentence
Limits can be changed with relative ease
new functions or extensions are a different thing.
Mostly architecture (like with buildings) limits the software, or at least, makes it expensive to overhaul.
1:1
1:n (1 against multiple)
n:m (multiple against multiple)
are such basic layouts. If you want to change 1:1 to 1:n or m:n, it means a lot of detailed work, if not partially substitute larger code parts or the whole application.
Like with group-pms
I'd currently rather patch it with extensions so it has, with minor workarounds, the same functionality you desire, rather than re-program most parts.