I am helping on a website, it was redone a few months ago. We have 301 redirection links set, uploaded a new sitemap (with the updated links) and submitted it. But only one page is getting indexed (the homepage). When I check the Craw Errors page there are multiple (300+) 404 errors and a few server errors (error 500). I have clicked on those links and checked where they are being linked to from and I found that it is the old sitemap (the new sitemap was uploaded in the old ones place). So I deleted the sitemap (from the website and webmaster tools) and uploaded the sitemap under a different name and submitted it. It's been a few weeks now and there is still only 1 page indexed (the homepage). So how come the old sitemap is being indexed and crawled (even though it was overwritten and then deleted a few weeks ago) rather than the new one?
First things first, a sitemap is only necessary if a search engine crawler is encountering difficulty crawling your website or your website contains a complex structure and hierarchy several levels deep. A well built website rarely actually requires a sitemap and with inbound links pointing to the site, a search engine crawler will do their business in crawling and indexing what it is allowed and instructed to do so.
So in this sense, I wouldn't worry overly about your sitemap.
However, it sounds like there is likely more critical issues on your website than whether the sitemap is being picked up (or it could be that it is, but all the links in the new sitemap are 404'ing due to other issues).
I'd suggest you test a few URL's (versions before the redirect and after the redirect) in a header response tool and see what header response code is being returned.
I'd also recommend using a tool such as Screaming Frog or Xenu to crawl your website, either of these will display what header response code is being returned for every URL's on your website, highlighting any crawlability issues.
Within Google Webmaster Tools, you can also fetch URL's as GoogleBot to see what is being returned when it visits your URL's. You'll also be able to see a list of the URL's returning 404's so you can drill down deeper into the root/cause of the problem.