Another balance is to just use real resources in CI with some concurrency control to make sure a single build runs at once. Locally, you continue to use mocks/stubs/fakes
You still get assurance from testing but reduce the amount of places you run the "expensive" (time, resource, $) tests