I think you can create a logic where you have a base ABP with default locomotion, then you can have a dedicated state machine for the NPC activity, but you’ll need to use a Linked Anim Layer to be able to switch sub-ABPs based on what the NPC activity.
The Linked anim Layer will eventually be a dedicated one for each activity, where you can build your custom logic for interaction and blend states.
Lyra is a good example of using Item Anim Layers and Linked Anim Layers, so I strongly suggest you to take a look at that and create a custom setup that will work as you described.