How can I make it so that new posts will be automatically private, except visible to other users which have the same user role as the post author?
You can see this WordPress repository plugin. Advanced Access Manager
This Plugin's restricts role, users, author to post/page dashboard access etc.
I hope this plugin will help you.