How to create a hidden, free product for specific customers?

As long as you don’t add it to a collection, the t-shirt should only be direct linkable except in the case of search results. You could use code to hide the specific product from the search results. Depending on determined you are to hide the shirt, you could send donors the link to register for an account and then only show the product to logged in users who are tagged Donor. This would require custom code to achieve. It would not be a huge haul.