There are some important things to point out that will help you get somewhere hopefully close.
First, the coupon code entry is a form separate from the checkout form. You cannot place one form inside another as that would conflict the submission process (essentially, you'd be submitting the wrong data to the wrong handling process).
Your approach of trying to handle it with action hooks is a good initial step. However, you probably will need to go the extra step of creating a checkout template that better suits your wishes.
A nice feature of WooCommerce is that you're not "locked in" to a specific layout. There are customizable templates for just about every aspect of layout in WC, including this one - the checkout form.
The template for the checkout form is
The first thing to do is determine if your theme is already applying a custom template. Look for the following in your theme's root folder:
If your theme has this file, great. Use that. If not, you'll need to set up your own custom template from the original that WC packages. WC's default templates are located in the WooCommerce plugin folder:
Copy that to your theme as `/woocommerce/checkout/form-checkout.php'
Hopefully, you're using a child theme to store any and all customizations.
There is additional information on working with WC templates here:
Once you've set up a custom checkout template, then you can go about the business of working on your layout. You'll notice that the template (if you're starting from the default) will contain the actions you were talking about (and a few more):
- woocommerce_checkout_billing woocommerce_checkout_shipping
On one hand, you should not only leave these in there, but make certain they are included because plugins and WooCommerce itself uses these to apply elements to the form. But on the other hand, there is not a specific requirement for you to keep them where they are in the default template. If you need to adjust the HTML markup to get what you want, you can move these as needed and/or apply HTML in the template as needed.
Ultimately, I think that's the answer to your question. You will need to work directly with the HTML in the template (and any CSS edits/changes/additions) to work out your specific layout. And that's exactly what templates are there for.