You can synchronize and subset data with SymmetricDS, an open source asynchronous multi-master replication engine that works with PostgreSQL. It uses triggers for its data capture, similar to slony. The transaction of commits is recorded so that transactions are preserved when syncing. It batches and routes the data to the target database, which gives you a chance to express where data goes. The interval of data synchronization is configurable so it can be close to real time.
One way to subset data using the value in a column is the Column Match Router. Each database (or node, in SymmetricDS parlance) is given an external ID that can be a reference for routing data. For example, one of your database nodes could be named
dba23, and you could look for that value to match on a table's column, like this:
If that router is too simple, you can use a Scripted Router and provide a Beanshell script that can access the row data and decide where to route it.
I've used the SymmetricDS Tutorial (chapter 2 in the User Guide) before as a quick proof of concept to try out ideas. It uses a sample database for a retail store use case with a home office server and multiple store databases. There is a
store column on one of the sample tables that could be used to sync each store database its subset of data.