With as generic of a statement of your problem you are right that there's limited solutions. However as @gvdhoorn suggests it's likely that if you more clearly define your problem there might be a better solution.
For example a common tool to use for receiving data with low latency is to use a tf2_ros::MessageFilter if you're processing data and need to wait for current information it will do all of that for you.
The only way I could think of is polling, or subscribing to /tf and filtering myself - both sounds bad to me.
This depends on what metric you want to use to define "bad" are you looking for minimum latency, minimum computational resources, minimal network resources. What are the rates of all components in your system? In most scenarios low rate polling will be by far the lowest CPU overhead, but will have higher latency.
Similarly do you really want an update every time that a transform updates? /tf
topics may come in at 1000Hz. Is there not a minimum threshold for the update etc? An example of doing something like this is already implemented in the tf2_web_republisher
To avoid an xy-problem could you perhaps add a little info on why you want to do this? There may be easier (and supported) ways to do what you actually want to do.