I would even go further: this sounds like a database problem.
Is the set of ship positions and watched polygons entirely different from run to run? If not, it should be possible to go much faster than even the new rust based approach that takes 6 hours.
I would have used a postgres database with a PostGIS spatial index.