I've never used the DBIx:: module(s), so I don't have any real advice - other than checking in DBIx::Class::Schema line 954 to see why this is calling ping() - off hand I don't think that DBD::Sybase does this directly when last_insert_id() is called.
Michael