I agree with @Paul_Bovbel, this could use a design discussion.
While the ‘filter’ nodelets work, chaining them can be problematic, particularly if a new point cloud arrives before the current one is finished being processed. Perhaps the ROS2 lifecycle could be used to start a new filter chain if, for example, the current cloud is taking longer than usual to ICP. Something similar to a worker/scheduler model.
It may also be worth looking at ecto.
In the long term I’d like to see a means of passing a point cloud to a GPU and having it to run a set of filter/operations on it. Perhaps something like shaders in OpenGL’s rendering pipeline or gstreamer’s approach to video processing.