Share initial build cache across all benchmarks
Previously, each benchmark would rebuild dependencies from scratch, which was
somewhat inefficient: many dependencies in Rust are shared amongst crates (e.g.,
syn, serde). This shares them across all benchmarks.
The next step would be to go further, and share between build kinds (e.g., build
scripts only need to be built once). But we don't actually have a good way of
doing so, so that's left out of scope for now.