I completely understand and agree with you that it's impractical today. It's not something that will change overnight or in a single PR. We need to understand the intent behind these environment variables, and provide the same functionality so teams can transition to stop using said environment variables.
For example, to remove the use of SWIFTCI_USE_LOCAL_DEPS environment variable, SwiftPM could support a feature that would allow overriding package dependencies. The override can looks something as follows
swift build --override-package-dependency id:swift-collections|branch:main --override-package-dependency id:swift-argument-parser|exact:1.6.1 --override-package-manifest-output path/to/updated/manifest.data
where SwiftPM would provide some sort of metadata (specified in the above example as the argument to --override-package-manifest-output) which would contains information about all the dependencies and their respective resolved commit ID. This file can ingested by another swift <command> command (e.g.: swift build --override-package-manifest myManifest.data) to provide the exact make package dependency data as specified in the --override-package-manifest-output file. This could allow devs to get the same package dependency checkout as was used CI environment without requiring executing additional steps.