I feel like I write about Waterfall and its problems a lot on this forum, but I'm going to do it again:
> Agile can handle getting rid of some features to meet the deadline, but waterfall can do priorities as well.
Waterfall is not particularly good at handling priorities. It's actually worse, in my experience, than anything else. Waterfall is about the order of doing things (it is fundamentally linear), committing to a plan (lack of flexibility), and has minimal feedback loops (lack of responsiveness).
If you have a 2 year deadline (true deadline like in your example), Waterfall only helps you if you assume everything will go right or put in drop dead dates for lower priority things. But even then, you'll have wasted so much time in your planning and designing you probably won't be able to keep it on track within a reasonable budget extension.
What you really want to handle priorities is an incremental and iterative development model. You know your target, but you break it down into smaller increments and build it out over time. After each iteration you re-evaluate your ability to hit the target. Within each iteration you may use a Waterfall-styled approach (particularly if it's a portion that's well understood in your organization or sufficiently small) or you may extend the iterative approach by adopting an Agile approach (think 3-6 months of 1-2 week sprints).
Using your Earth-Venus example. You need X, Y, Z. You want A, B, C. You only have 2 years to deliver. In Waterfall you'd spend 3-6 months designing everything before building it. If you're smart you design it with a way to drop A, B, and C. But that's a lot of time spent up front on contingency planning and pushes you closer to 6 months. Now you're 18 months from the deadline before production even starts. Oh, and testing doesn't happen until pretty late in this process. So your production is constrained to no more than 12 months in order to allow sufficient testing time (6 months).
If you're actually smart, you create checkpoints/milestones and do it incrementally. You start work on X, Y, Z and as much of A, B, C as you can afford. After 3 months you see that X is progressing fine, Y is possibly going to miss the target, and Z is definitely going to. So you check and A is going to be done in a month, B turned out to be a cluster, and C may complete on time. Cut your losses, B is gone, the money and manpower are moved to the core mission.
Next iteration you reexamine, and find out that you C may still complete but Z is barely back on track. So you take some or all the funding and people from C and dedicate them to getting Z back on track. In the best case C can still be done, but it probably won't. We accept our losses and continue this process.
That is a fundamentally agile approach. It's about responding to the changes that come up. Waterfall is not, in itself, capable of this.