How to best structure a large project into multiple installable packages

You probably need namespace packages. Ignore the Legacy Namespace Packages part if you only care about Python 3.