Going to reply to myself in case someone else has a similar situation.
As of now, I am convinced that I cannot for any reason add a delegate to a blueprint function library and expect to be able to use it. It will add just fine, but that necessity to have a handle on the class that declared it just won’t work with a blueprint function library in which everything is expected to be static.
So, I have a roundabout idea. I can, perhaps, create these delegates inside something like game instance. Also, have a function there that I can call from the blueprint library to invoke the delegates.
Something like:
getGameInstance()->doPawnSpawnRequest(spawnData);
Obviously, I’ll have to cast that game instance to the real c++ version of game instance I have created.
EDIT:
As a further note for someone who might be following. In order to save you from a merry chase trying to find out how to get a game instance in a static library:
You will need to:
include <Kismet/GameplayStatistics.h>
Then where you want a reference to the gameinstance
UMyGameInstance* myGameInstance = static_cast<UMyGameInstance*>(GEngine->GameViewport->GetWorld()->GetGameInstance());