The scale and offset are performed in the sequence described in the documentation. If you want to perform different operations on the incoming value, you’ll have to create a template sensor. I’d suggest doing the offset in the modbus config and then creating a template sensor to scale it.
The scan_interval must be a fixed number, so what you can do instead is set a very long time (months or years) and then create an automation that fires on whatever interval our trigger you want, and calls the update_entity service
Also, in the future please format your code properly. See item #11in this post.