Domains change hands all the time, so links that are no longer able to be crawled will eventually be removed from search engine indexes, as Google indicates here:
Google updates its entire index regularly. When we crawl the web, we
automatically find new pages, remove outdated links, and reflect
updates to existing pages, keeping the Google index fresh and as
up-to-date as possible.
You shouldn't use a 301 to redirect them however, since you'd be indicating to search engines that they permanently moved - lots of spammy working links pointing to your site might result in a penalty. Instead, you should return a 410 Gone to indicate that:
the resource requested is no longer available and will not be
available again. This should be used when a resource has been
intentionally removed and the resource should be purged. Upon
receiving a 410 status code, the client should not request the
resource again in the future. Clients such as search engines should
remove the resource from their indices.
As Google indicates here, a 410 tells the Googlebot that the requested URL is invalid and won't be available again. URLs that don't return this may not fall out of their index until other pages stop linking to them (like you think your competitor might be doing).
You can also use the disavow links and webpage removal tools available through search engines, like this one from Google. As indicated there:
If you’ve done as much work as you can to remove spammy or low-quality
links from the web, and are unable to make further progress on getting
the links taken down, you can disavow the remaining links. In other
words, you can ask Google not to take certain links into account when
assessing your site.
If you have a strong inkling that your competitor is indeed behind this, a diplomatically worded letter may be enough. If not, a cease-and-desist letter from an attorney would likely dissuade them from pursuing that further.