Note: I don't want to put them in separate projects, as those types will be used only by 1 project.
There isn't necessarily a clearly superior solution here. Either approach may be perfectly fine.
If you expect that you are more likely to change models and constants within a group together, the organizing your code by groups first is sensible.
If you expect that you are more likely to change only one type of code but across all groups, then you should organize by type first.
If in doubt, I'd first organize by group because you say that these groups are unrelated. This doesn't prevent you from also sharing some code across all groups, and organizing that shared code by type.
Not the answer you're looking for? Browse other questions tagged c# project-structure namespace directory-structure or ask your own question.
Why is "tight coupling between functions and data" bad?