I think first you really need to look at your Marketing Channel Processing Rules... You need to make sure your more specific rules are at the top, and you may need multiple rules to capture variations... if content is getting through, then your rules may be too specific to catch these variants, which is why they are filtering down to a lower bucket.
So for instance, maybe when it comes to your paid search, you are using the standard "Paid Search Detection" and "medium=paidsearch"...
But are your Paid Search detection rules up to date? If they aren't then your "paidsearch" medium may not be caught by that rule (because it didn't meet both criteria), and therefore it got caught by the first bucket whose criteria matched...
You could consider adding a second rule based solely on "medium=paidsearch", but that also has challenges.. if I bookmark a link that has that medium on it, and I return to the page from my bookmarks, do you really want that to be treated as a Paid Search Channel?? This is why the paid search rules look for known search engines as referrers and for specific campaign codes.. so it's possible that those paid search mediums showing in direct are in-fact direct... this is always a problem with UTMs and Query String Parameters in general... they can pop up in unexpected places (like bookmarks, or incorrectly shared social media posts, etc).