En mi caso he realizado una prueba rápida cargando la BPL y ejecutando ambas llamadas (primero el procedure y después la función) y me ha funcionado sin problemas (con Delphi 10.3).
Con el mismo código que has puesto.
Lo que sí hemos comentado otras veces, que a las DLLs y por extensión a las BPLs no les gustan mucho el tipo
string. Cambia el
string de retorno de la función por un
PChar o un
PAnsiChar y vuelve a probar.