Hi,
Indeed, if you have a form inside a form, that's actually normally not valid HTML. So it could definitely mess up the this.form
What you could try is edit the show_block_buttons view file and change the this.form by document.getElementById('hikashop_checkout_form') and see if that helps. If yes, then it would confirm this hypothesis.
Note that what you could do is actually not have a "confirm" button for your credit card form and instead plug yourself to the checkoutFormSubmit js trigger to be able to catch the submit of the checkout form, do your credit card ajax request to the payment gateway at that point and either let the submit process continue with the token of the credit card/authorization after replacing the credit card form, or cancel the submit if a problem occured.
That's what the Authorize.js plugin from Obsidev on our marketplace does so that it can have its credit card form inside the checkout while still not requiring complex PCI-DSS compliance.
To plug yourself to that trigger, you can do something like that:
window.Oby.registerAjax("checkoutFormSubmit",function(checkoutForm){
// run your code
});