WP_Query
can repeatedly loop through the retrieved posts multiple times, but it was never meant to query them repeatedly/iteratively. You can just do $query->query($args)
again, but there is little point as opposed to just making a new clean object.
In your case I think it would make sens to have your custom function accept optional parameters, along the lines of:
function all_movies( $args = [] ) {
$defaults_args = ['stuff'];
return new WP_Query( array_merge( $default_args, $args ) );
}