I really recommend you don't use Spring's @Transactional annotation if you must use asynchronicity, as it will always bind transactions to threads. Some additional insight can be found here as well:
Yes, using the jOOQ transaction API is what I suggested. The "configuration" in your example will contain a DefaultConnectionProvider which will not return the Connection to the connection pool for as long as the transaction runs. Based on this "configuration" (and its underlying connection), you can now continue using jOOQ API, including the asynchronous one. Notice that depending on the thread safety guarantees of the underlying JDBC driver, you might still have to make sure your threads do not access the JDBC Connection concurrently. I.e. your asynchronicity should be implemented in a strictly sequential way.
Notice that the transaction itself will still block the calling thread. If you want to avoid that, you might as well just make the entire transaction asynchronous using DSLContext::transactionAsync, and then not worry about the transaction contents.
I hope this helps,
Lukas