Im sorry it’s taken so long for me to update this, I’ve been incredibly busy lately. For those that are still curious, here is a breakdown of how I’ve gone about creating the pose blending loop.
The poses are blended together using a 1d blend space between the walk and run pose. These are fed into the state machine and blended together to create a cycle.

The blend between these poses are controlled by a timer. The speed of the timer is controlled by the speed input of the pawn (you may have to play around with some of the values here, these are the ones that happened to work for me). Once the timer hits the final pose, in this case the 4th increment, the value of the timer is reset and thus creating an infinite loop. The movement curve allows for a smooth transition between each pose, this works as a rough substitute for the lack of interpolation options.

The foot prediction is applied on top and is best demonstrated with the image below.

For this example, take point A as the starting location for the foot. Based on the velocity of the character and its stride length, point B becomes the predicted destination for the foot to be placed. By tracing between these two locations, it is possible to determine if there are any obstacles blocking the characters path.
At this point tracing downwards from above point B will give us the correct destination for the foot. It is worth noting that tracing up could produce the same location, but if there is an overhanging ledge above it will ignore it and thus try and plant the foot through the terrain. Assuming that an obstacle is in the way, the character needs to determine the height of the obstruction.
Tracing from point C to point A reveals if the obstacle is still blocking the path of the foot. If the trace finds any hit objects, then another can be used to determine the exact height of the obstacle. Tracing between point A and D will check if there are any other obstructions between the character and the first obstacle, whilst tracing between point D and C will determine if anything else blocks the characters path. Assuming that no other obstacle blocks the path, the foot can then progress to be planted at the new location. If another obstacle does block the path of the player, then part of the process is repeated, tracing down from the new obstruction and continuing from there. The location of the highest obstacles may then be used to calculate the height the players foot need to be raised to in order to avoid any form of collision with the terrain or obstacles.
The big limitation of this method lies with steep terrain, as the predicted foot placement relies on a trace downwards to find the foot location. The length of the trace would need to be able to change dynamically depending on the angle of the terrain to ensure that while the player traverses the steep terrain the feet may be correctly planted, but also when the player moves across gentler slopes the trace does not hit any low hanging ceilings or other height based obstructions.
The foot prediction itself is quite a large set of blueprints and all the calculations vary depending on the character. I’ll aim to post a more in depth breakdown of that later in the week if I have the time.