As per parent jira, the cleanest way to add region replicas we think is to actually create one more region per replica per primary region. So for example, if a table has 10 regions with replication = 3, the table would indeed be created with 30 regions. These regions will be handled and assigned individually for AM purposes.
We can add replicaId to HRegionInfo to indicate the replicaId, and use this to differentiate different replicas of the same region. So, primary replica would have replicaId = 0, and the others will have replicaId > 0.
These replicas will share the same regionId prefix, but differ in an appended replicaId. The primary will not contain the replicaId so that no changes would be needed for existing tables.
In meta, the replica regions are kept in the same row as the primary ( so for above example, there will be 10 rows in meta). The servers for the replicas are kept in columns like "server+replicaId".