After working through the great responses I got, and testing various options, here's where I am:
My first solution (using undef as key values for fields I didn't want) wasn't doing what I thought it was. Although Perl warned (when warnings were turned on) about assigning to an uninitialized value in a hash slice, it also quite happily initialized those keys to an empty string (like it does with other undefined scalars in similar situations). So both of my solutions were really doing the same thing: assigning to a dummy key (named '' or 'DUMMY', respectively). The only problem was that I wasn't deleting the dummy key in the first solution. :-)
There were no real surprises with using an array slice with my hash slice (as suggested by almost everyone), but there was one significant downside: I was replacing two lines of very readable code with up to five lines of much less readable code, and I feared for those who would have to maintain this after me.
So, unless someone comes up with a better idea, I will be using my second solution. I think that in general a combination of the various answers I received might be a better solution, but for this project, simplicity wins.
Thanks to everyone who I haven't thanked yet (petral and seattlejohn) and I'm still open to more suggestions. :-)