The answer is
Unfortunately, this answer is neither elegant nor easy to explain since I found it via brute force. It's pretty disappointing to solve a puzzle this way, but I don't think anyone explained a correct answer yet (at least before I was sniped by Charles Gleason!).
The General Approach
Consider the case of 9 coins with one heavier than the rest. The optimal solution here is two weighings. First set 3 coins on the left and 3 on the right. If they're equal, the heavy coin is in the remaining three. If they're not equal, the heavy coin is on the heavier side. Weigh two of the coins in the "heavy" set of three coins. If one is heavier, that's your answer. If they're equal, the remaining coin is your answer.
The principle to take away here is that your best bet is to try and separate the coins into three roughly equal groups based on the outcome of each weighing. This way, no matter what the outcome is, you've reduced the number of possible solutions to about a third. Regardless of the result of the weighing, you go from looking at one of nine coins to one of three coins.
The only difference between this toy problem and the one asked by ThomasL is the number of possible solutions. There being two odd coins makes no difference. We have
combinations. At each step, we try to cut this number down to a third its original value. Since 3^6 exceeds 380, we should theoretically be able to do this in 6 steps, and find that it's achievable in reality as well.
The first step is simple. Take any five coins and weigh them against any remaining five coins. No matter which coins are weighed, if the scale is balanced you have 130 remaining possibilities, if the left side is heavier you have 125 remaining possibilities, and if the right side is heavier you have 125 remaining possibilities. Do your best to repeat this procedure five more times and you will identify the heavier and the lighter coin without fail every single time.
The Nitty Gritty
I first solved for the worst-case scenario. Of the three outcomes that can occur when you place coins upon the scale (left heavier, right heavier, both equal), I reasoned that the worst-case would be the one that leaves the most solutions open.
- C1, C2, C3, C4, C5 on the left, C6, C7, C8, C9, C10 on the right. Worst case scenario is they're both equal, leaving 130 solutions.
- C4, C17, C18, C19, C20 on the left, C6, C7, C11, C12, C13 on the right. Worst case scenario is they're both equal, leaving 44 solutions.
- C1, C4, C10, C13, C18 on the left, C1, C4, C10, C13, C18 on the right. Worst case scenario is the left side being heavier, leaving 15 solutions.
- C2, C3, C8, C10, C12, C14, C15, C20 on the left, C4, C5, C7, C11, C13, C16, C17, C18 on the right. Worst case scenario is they're both equal, leaving 5 solutions.
- C2, C10, C14 on the left, C4, C12, C16 on the right. Worst case scenario is they're both equal, leaving 2 solutions.
- C12 on the left, C11 on the right. One solution remains.
There are probably better ways to do that. I hoped that if I solved for the worst-case scenario, the other scenarios with fewer remaining solutions would be trivial. I am not sure if that is the case. Perhaps there are situations where a case with fewer remaining solutions actually takes more steps to solve due to the solutions being tricky to separate.
Regardless, I went ahead and brute forced it. After finding an optimal weighing at each step so as to split the solutions among the three outcomes, I looked at the optimal next step for each outcome. Do this until 1 solution remains, which takes six steps no matter what.
Full brute force solution and calculator tool for looking at solution splits can be found here, with sloppy-but-reproducible python code here.