Two channels is a poor way to handle priority. If data comes in on the low priority channel just before the high priority channel, you would still be blocked waiting for the low priority task to complete.
In a case like this, maybe just run two different consumer routines for the two channels, then neither would be blocked waiting on the other.