Use jinja loops to remove more redundancy in the common state file.
Combine similar states with templating. Ideally, the variable data (hostnames, ips, usernames) - the 'hosts' and 'ssh_users' fields - would be used via pillar to allow changing the state file less often.