BTW, it just occurred to me that having this separation would make it relatively easy to support re-directing DML queries from a replica to the master; if the backend throws the error indicating you tried to write data, the connection layer could re-route that.
This also sounds like it would potentially allow re-routing the other way where you know the replica contains up-to-date data, couldn't you potentially re-direct read only queries to your replicas?