You tell me that I must have each gschem element represented by a
footprint.
Technically, each gschem symbol *belongs* to a device, not *is* a
device. The *device* is represented by a footprint.
You can have multiple symbols belonging to the same device, for
example my CS8900A has two gschem symbols (one for the CPU side, one
for the ethernet side), but only one footprint. That works as long as
(1) both symbols have the same footprint=, (2) both symbols are given
the same refdes, and (3) the pins don't overlap.
The third requirement is met in my case by using different pin numbers
for each of the two symbols, but in the case of logic gates, the slot=
attribute indicates which set of pins that symbol corresponds to. As
long as all the gates for one package have the SAME refdes and
DIFFERENT slots, it will all work out.