From SEO perspective, redirecting the category page to the product page is like shooting your own foot.
By having separate pages, you have more chances to rank for more keywords.
It is understandable to use a 302 redirect to get users directly to the product but as you can see it causes all kinds of consequences.
If you are worried about user experience, you could using a Javascript to redirect users and block search engines from accessing the Javascript - so search engines don't get redirected.
However, you need to be careful with JavaScript these days because Google has started to execute them pretty well - thus make sure to block the files.
here is a blog post that talks about Google can now execute Javascripts.
http://www.rimmkaufman.com/blog/google-crawling-javascript/13052015/
In fact, you can also use javascript redirect to do a 301 redirect
https://digitalreadymarketing.com/301-redirect-javascript/
NOTE: Technically speaking, it is not a 301 redirect since Javascript is executed at browser page level and the status code will remain the same. However, Google will pick it up as a 301 redirect.
Here is more tips on how to deal with seasonal / out of stock product pages
https://moz.com/blog/how-should-you-handle-expired-content