add_rewrite_rule() not stored (I think)

It’s not showing up because internal rewrites must point to index.php. This isn’t your theme’s index.php file, it’s the main root WordPress bootstrap file. This is how WP detects what should be an internal rule (parsed in PHP) and an external rule (added to htaccess).

The other issue you will have is that page_name isn’t a valid query var. For a custom post type, you can simplify this to:

'index.php?tournament=$matches[1]'