I don’t have enough experience to say what’s the good way to do things.
I think the best answer will be “it depands”
SavedMove is send very often so you can use it to define stuff that may change often. You are limited to an int8 - means 8 differnt bits. Sometime you will be able to combine bit if the abilities are exclusives, so you can save some bit.
Otherwise, RPC is fine.
Make a list of your needs, check what can fit within this method and choose what do to in the 8 bits are not enough.