Possibly you shouldn’t run them every time. The gas being consumed is being subtracted from the provided gas and the test is being returned to the caller. If you add too much gas, the unused one is getting back to you so this shouldn’t be a problem. Then you only need a rough estimate to provide a reasonable gas limit and that’s it
Regarding the gas price - this should be per user to decide - the higher gas price will likely result in the transaction being included faster. If not configured, the node is using the default gas price of 1 000 000 000 and most miners will not accept anything lower than that.