Where are you getting the session_expired error from? That doesn’t sound like it’s coming from Twitter.
Have you tried a third set of keys to further narrow the problem down to Consumer B? It certainly can happen where an application gets stubborn and refuses to auth correctly, but it’s a rate condition.
I would get down to a level where you’re logging the exact outbound URLs and HTTP headers being executed and the responses you’re getting back. If possible, drill down into the signature base string and signing keys – maybe you’re using consumer A’s secret with consumer B or some other minor gotcha.