The thought I had in mind upthread was to get rid of logicalrep slots in favor of expanding the underlying bgworker slot with some additional fields that would carry whatever extra info we need about a logicalrep worker. Such fields could also be repurposed for additional info about other kinds of bgworkers, when (not if) we find out we need that.
That sounds OK to me personally for in-core logical rep, but it's really Petr and Peter who need to have a say here, not me.
Actually, I take that back. It'd bloat struct BackgroundWorker significantly, and lead to arguments whenever logical replication needed new fields, which it surely will. Every bgworker would pay the price. If we added some kind of union to struct BackgroundWorker, other worker types could later use the same space, offsetting the cost somewhat. But that'd be no use to out-of-core workers, workers that don't actually need the extra room, etc.