Fix infinitely recursing custom keepalives

Custom keepalives are called regardless of whether a command is issued
or not.  The rationale being that custom keepalives are checking for
something specific rather than just assuring session state.  Notably,
SOL uses a custom keepalive to see if the payload is still active.
The resultant problem was that if keepalive expired just at the time
something was in the midst of a command, a session would infinitely
recurse into its own keepalive.  The issue was that the keepalive
expiry incorrectly omitted _monotonic_time, causing expiry to
always be far in the past.  It normally did not break because if
not incommand, send_payload was setting an appropriate value after
the incorrect setting.

Change-Id: Ie86e49890a6ac96ddf07206fb1b8558161c00a20