before your action keyword (click, input text, etc) instead of Wait Element Is Not Visible, use Wait Element Is Visible and/or Wait Element Is Enabled on the element you are about to interact with, I expect when the “loading” is visible, it’s a html element floating above the other elements in the page making the element you want to interact with either hidden or disabled.
The problem with using Wait Element Is Not Visible everywhere is what you set your timeout to and the impact it will have on your test execution times, if you set it too low then the “loading” element might still be on the screen, if you set it high and the “loading” element never appeared then you have to wait till timeout till you can progress.
Another option would be to create a wait for finish loading keyword, have it first check if the “loading” element is visible before waiting for it to be not visible, this could potentially be used in a test Test setup or teardown depending on how your tests are structured