Use the Actor and see the appropriate replication & network variable to fit your needs.
Actor class is not spamming a lot of stuff unless you set it to do it.
For example, you can set the Network delay between update. If you set it to 5 seconds, replication will only occur every 5 sec. More, you can just use RPC calls and not variable replication. By doing this, replications will only occur once you do an action.
I don’t know where you found the “spamming stuff” in Actor, but you should look at it another time. And if it’s still too much… I would say that you should write your need and build your own C++ class bases on UObject and managed the network part (but that’s a big piece of work).