Indeed dialog OPTIONS are send with wrong CSeq and there is no way to fix it without patching source.
In docs for dialog module "If keep alive is enabled for a dialog, the module will send SIP OPTIONS requests with CSeq lower or equal than last request within dialog"
Usually Kamailio is used before some media server (asterisk, freeswitch...):
endpoint1 - kamailio ----leg1---- media_server ---leg2---- kamailio - endpoint2
So if it is your case and you want to check if dialog alive, you may ping media server instead of pinging remote endpoints:
for leg1: dlg_set_property("ka-dst");
for leg2: dlg_set_property("ka-src");
Of course your media server should support this not inaccurate CSeq handling. I successfully use it with freeswitch for example (with some minimal freeswitch tuning)