Hi,
It is called only once per order and per save.
If you have HikaMarket and you change the status of an order, you'll also have each sub order's status changed and thus, the trigger will also be called for each sub sale.
So in that case, you probably only want to take into account the save of main orders and thus add a check on $order->order_type (or $order->old->order_type) equal to "sale" in your code.
Mass actions or third party plugins (or even some particular HikaShop plugins) can also potentially save orders to change something after an order is saved. Deactivating them can help avoid that, but if you have them, it's probably that you use them, so it's better to add additional checks in your plugin in such cases.