In case a queue object is in fact a mutex, the two fields are not used in their normal way (head, tail). These are pointers, not characters. uxQueueType will be set to NULL (queueQUEUE_IS_MUTEX).
It may look a bit confusing, but it is entirely local to tasks.c. I’m sure it was done to save a few bytes of RAM.
In another C project a union could be used for this, but union's are not supported by all compilers that are used to compile the FreeRTOS kernel.
The member used when tracing: ucQueueType is indeed an 8-bit field that holds a copy of ‘ucQueueType’ that was used during creation.