The HOWL is a really difficult railway line to path due to several constraints
- Location of passing loops
- The need to cross trains along the HOWL
- Requirement to fit in between faster services on the main line at either end of the HOWL.
All three of these factors come into play in this circumstance.
First of all, the 05:50 Llandrindod-Shrewsbury and 05:22 Shrewsbury-Swansea trains have to cross at Knighton as that's the only loop between Craven Arms and Llandrindod.
Secondly, the 05:22 ex-Shrewsbury needs to leave Knighton at 06:25 in order to cross the 05:47 Swansea-Shrewsbury at Llanwrtyd (which is where the crews switch on those services).
So with that constraint in mind, it has to leave Shrewsbury no later than 05:22 as otherwise the faster train behind it (the 04:23 Crewe-Cardiff) would be held up between Shrewsbury and Craven Arms.
Hence it will get to Knighton for 06:11, and has to wait there for the northbound service from Llandrindod to arrive.
The northbound service from Llandrindod at 05:50, is timed to get to Knighton for 06:23, which allows the southbound service then get away south towards Llanwrtyd at the time it needs to in order to cross the train from Swansea.
The 05:50 ex-Llandrindod then has, similar to the southbound service that it crosses at Knighton, the problem of a potential clash with a faster service on the mainline with the 05:14 Cardiff-Holyhead. If it were to depart at say 06:25 it would delay the Cardiff-Holyhead between Craven Arms and Shrewsbury. Hence it has to wait at Knighton until a time that allows it arrive at Craven Arms and continue towards Shrewsbury after the 05:14 Cardiff-Holyhead is clear of the signal section ahead. Hence it has to wait until 06:43 to leave Knighton.
That's why you have the sub-optimal times such as these long waits at Knighton. There's no other way of doing it unfortunately.