Do you also need to exclude IPs that are present at the beginning of the hour, go missing briefly in between (as in, the time series becomes fully absent), but are present again at the end of the hour? We don't have a way in PromQL to check whether a series has been absent just briefly within an interval, but is there most of the time. We have absent_over_time(), but that only checks whether a series has been fully absent over a given time range.
But if your IPs behave in such a way that they don't appear / disappear that rapidly, you could check which ones were there both at the beginning and the end of the interval:
CMSummary offset 1h and CMSummary