Hi!
1. This is a fine approach, but you may want to store your artifacts outside of GoCD server. I use Docker with most of my clients, and having a baseline of modules/jars/etc that many projects use, will allow you to only need to add a few each case. YMMV of course, and may want to rebuild these baselines every day or week.
2. A CACHE directory for build pipelines may be A VERY BAD IDEA. This of course depend on what you aim to achieve, but for your builds to be as repeatable (idempotent) as possible, and avoid producing snowflakes builds (builds that cannot be reproduced, or no-one knows how it ended up the way it did), you want to have an as clean slate as possible for each build. You don't want to depend (ie re-use artifacts from some random cache) on what a previous run of the same pipeline did. Using a CACHE, violates this principle.
Jenkins, out of the box, when using Maven for instance, violates this happily.
Again, that may be of course be valid depending on your specific context and requirements of your CI. As a rule of thumb for Continuous Integration - I recommend you think twice before violating this principle.
If you're into Continuous Delivery/Deployment and think this is a principle you can break, I'd say you're unprofessional about your work.
3. If you want to fetch dependencies (which are not GoCD material), and you think it's too slow, there are several options available to you. I've seen Maven builds drop from minutes to < 15 seconds, simply by putting Nexus on a (1000 USD) machine with fast disk and dedicated gigabit network interfaces.
4. I think there are some great consequences from running your gocd agents in containers, which are thrown away every 24 hours. Primarily these I think:
* you'll learn how to make every build quick (including the first build of the day/on a new agent), where in your pipelines to logically "cache" things - ie which step, how to "cache" it (GoCD artifacts, Nexus, yum repos, Docker images, tar.gz artifacts with pre-packaged dependencies updated only once a day and simply unpacked on builds, ...)
* you're less likely to create snowflake agents (related concepts: phoenix servers, "cattle vs pets")
What ever you end up with - please share your solution and what you learned (and think about it), so we all can learn! :-)