Can I modify a WP_Query instance or clone it with modifications?

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 ) );
}