Welcome to WebmasterWorld Guest from 184.108.40.206
You can't send a 301 redirect after sending "404" in the header. That's not possible. The HTTP transaction is finished when the 404 is sent. Send just one or the other of the codes.
Just provide the right error message and supporting internal navigation right there on the 404 error page and let the visitor click one.