Transport worker threads should basically always be in state `RUNNABLE` which means that today they are reported by the hot threads API as 100% hot even when completely idle:

```
   100.0% [cpu=0.0%, other=100.0%] (500ms out of 500ms) cpu usage by thread 'elasticsearch[instance-0000000004][transport_worker][T#1]'
     10/10 snapshots sharing following 9 elements
       java.base@17.0.2/sun.nio.ch.EPoll.wait(Native Method)
       java.base@17.0.2/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:118)
       java.base@17.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:129)
       java.base@17.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:146)
       io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:813)
       io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460)
       io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
       io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
       java.base@17.0.2/java.lang.Thread.run(Thread.java:833)
```

This is misleading even to experienced engineers, and we have fielded rather a large number of cases and questions that focus inappropriately on this output. There's [docs on the subject](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html#modules-network-threading-model) of course but this is only useful for folks that know their existence.

I think we could reduce confusion in this area a great deal if for threads for which `Transports#isTransportThread` returned true we adjusted this output slightly:

- rename the `other=` field to `idle=`
- sort these threads according to the `cpu=` time only rather than the total `RUNNABLE` time.

It is true that these threads might be `RUNNABLE` off the CPU in some other native method (e.g. waiting for disk IO, perhaps related to trace logging) so we do still want to see these numbers, but in practice we never see `other=` time in anything but `EPoll#wait`, so renaming the `other` time to `idle` solves a lot more confusion than it causes.
server/src/main/java/org/elasticsearch/monitor/jvm/HotThreads.java
percentOther + percentCpu,
                            percentCpu,
                            percentOther,
                            TimeValue.timeValueNanos(topThread.getCpuTime() + topThread.getOtherTime()),
                            interval,
                            type.getTypeValue(),
                            threadName
                        )
                    );
                }
                default -> {
                    long time = ThreadTimeAccumulator.valueGetterForReportType(type).applyAsLong(topThread);
                    double percent = getTimeSharePercentage(time);
                    sb.append(
                        String.format(
                            Locale.ROOT,
                            "%n%4.1f%% (%s out of %s) %s usage by thread '%s'%n",
                            percent,
                            TimeValue.timeValueNanos(time),
                            interval,
                            type.getTypeValue(),
                            threadName
                        )
                    );
                }
            }
            
            
            boolean[] done = new boolean[threadElementsSnapshotCount];
            for (int i = 0; i < threadElementsSnapshotCount; i++) {