I figured out a possible solution:
- In the symbol, create as many identical ground pins as there are ground pads on the device package. (I'm just using GND as an example here. This works for any repeated pad on the package.)
- Assign one of the package ground pads to the pin number field of each ground pin in the symbol.
- Take all the ground pins and place them at the same coordinate in the symbol drawing, i.e. stack all the ground pins on top of each other.
- For all the ground pins except one, edit the pin properties and uncheck the visible box. This will leave only one of the ground pins visible when the device symbol is placed in a schematic.
- When the device symbol is dropped into a schematic, just attach the ground to that single, visible ground pin. eeschema will attach the ground net to both the visible pin and all the invisible ground pins. Hence, one connection in the schematic gets all the ground pins of the device connected to ground.
This technique works for all types of repeated pins except for no connects (NCs). If you do this with multiple NC pins, then they will all be connected to each other even if you don't attach a net to the single remaining visible NC pin. If the NC pins are actually supposed to be left unconnected (and not tied high or low), then this is not what you want. The way I handle NC pins is just to leave them off the symbol entirely so that nothing can ever be connected to those package pads.
Big thanks to Dave Vandenbout and forum.kicad.info!