This quote from DannyHamilton answering a question regarding hosted wallets (on an eventually non-secured provider) may already answer your question.
It seems to be a sweat approach.
Have a separate smaller system which is not hosted for sending funds out. The users can place requests for funds on the hosted server where the requests can be stored. The non-hosted server can retrieve the requests, run them through a set of sanity checks to make sure nothing unexpected is happening, and then can send out the funds in scheduled batches (reducing transaction costs).
The non-hosted server can be secured behind a firewall allowing NO incoming connections at all, and ONLY allowing the 1 outgoing connection to the hosted server.
but are there any commonplace security protocols/techniques that should be employed in order to minimise risk of hot wallet funds being stolen
To name the most obvious ones: Set up a proper firewall (only allowing connections/ports you need), make any sensitive calculations server-side, make sanity checks before withdrawals / crediting.
With those basic steps you are already better secured than roughly 50% of online services.
or is there really not much I can do other than regularly move fnuds out of the hot wallet to the cold wallet?
You should definetely move funds out of your hot wallet (or don't even receive them to you hot wallet; use an maste public key to derive public keys / addresses) regularly.
Only keep the amount in your hot wallet you need to run your business successfully. Anything above should be withdrawn to your cold storage.