@nus No, they do not contribute to battery drain. There is no difference in power consumption between a process that exists but is never scheduled and one that does not exist. One that does not exist to start with, but which gets started from scratch on a triggering event from GCM, is A LOT more expensive.
The kernelspace TCP keepalive has a tiny but nonzero energy cost. It's much smaller than whatever constant network noise Play Services/GCM are keeping up, doing userspace keepalives in Java.