Hook on slug generator

I think you should be able to do this using the wp_unique_post_slug filter (which is applied in the function of the same name):

add_filter("wp_unique_post_slug", function($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
    if($meta = get_post_meta($post_ID, "my-meta", true)) {
        $slug = $meta . '-' . $slug;
    }
    return $slug;
}, 10, 6);

As this is applied at the end of that function and I believe WP expects and relies upon that slug to be unique, you will have to make sure that it is. I believe that it will be generated (and saved) as the post is published, so you’ll have to have your meta values ready by then.