Life is simple if you use portable installs for projects. Each project has its own portable install which includes everything that is needed (board package, libraries, source and so on).
If you update e.g. a library in project A, project B will not be affected.