They are not really important
This seems an scenario where you have a GNU/Linux distribution, such as Ubuntu or Red Hat.
If a package (e.g. libc) was compromised upstream, and Red Hat packaged it, it would flow to your OS (the classic scenario you have found discussed).
A supply chain issue at the distro would be that the upstream package was clean but the package distributed was not.¹ The possibilities are:
The source code is clean but the compiled version has some malicious code added. The solution for this would be to recompile all packages you use from a trusted system. Reproducible builds want to ensure that third parties are able to compile the same package file as the distro, thus ensuring it corresponds to the published source code, but in many cases we are not there yet. We don't need those if we build all our artifacts, though.
The packager added some evil code to the source (in the build script or a patch), in which case your private builds would produce malicious packages as well. Avoiding this would require you to review the packaging of all packages you use. For each version.
There's also an important yet implicit requisite, which is that you must be able to upgrade packages (at least for security bugs). Otherwise, it would make no sense to pin packages is nothing is ever going to be installed.
Now, let's analyze your proposed solutions:
- hosting the packages in private repositories
Hosting the packages in private repositories is useful for reproducibility (e.g. if the official mirrors disappear), but of limited use for security. It may protect you if an existing package gets changed and a machine that didn't have it later needs it installed, but since a package version shall be immutable once created, it's much easier to keep a list of package hashes and yell if an existing package changes its signature.
Note that someone able to change the contents of an existing package and resign the package list to pass the cryptographic validation could as well insert a new version of an existing package so that it will be upgraded. Much more effective (albeit noisier). So you would need to apply the same countermeasures for an evil maintainer (with an honest builder) anyway.
You may consider that your other solution:
- pin OS dependencies (apt,rpm,etc.)
protects you from this, but it's actually a can of worms, as it will cause conflicts with the goal of keeping the OS updated. Pinning packages will prevent updating the pinned packages, and it may transitively block others as well. So you actually want to end up upgrading all proposed package, what you need instead is a verification step of all packages that are going to be updated.
So, the main tools to protect your supply chain at the distro level would be to host your own builds and/or reviewing the work of the packagers. Hosting a private copy would be of marginal benefit (although a local mirror can be useful for non-security reasons), and package pinning actually harmful when blocking security upgrades.
¹ In this case as end users it is not relevant whether the maintainer itself was evil or the infrastructure was compromised (including the signing key).