I've been thinking about writing an exporter for Blender that takes class info from Blender object properties and directly writes out Python code to create these scenes. For example, if you have a Player mesh at location A, with property 'Class: Player', and a Monster at location B, with property 'Class: Monster', it would actually write lines 'createObject(Player, { pos = Vec3(...) }) ... createObject(Monster ...'. These classes would be written in your actual code, and you just call the function that this code is in, importing it in. You could do per-instance scripting by writing the script in a Blender 'Text' object, most probably a class that derives from Monster or such and overrides certain functions, and reference this script in the logic properties. The exporter would paste this class in before the createObject function allowing creating objects with special functionality for that instance. You could have pre-load and post-load events, the code for which would again be in Blender text files. Eventually you could make a .pyc out of this to make loading quicker. Thus rather than having an intermediate format which you then write code to read, you just write the code that creates the objects.
I think this may be a great way to use Blender for level design. In this case the Blender models are simply placeholders and only position/orientation data is used, but you could use Blender as an actual modeller for the level meshes (like brushes in BSP level editors) by exporting them to .egg, naming these in the Logic properties, and having the object load the respective mesh up.
This is very similar to a pipeline I used for Python scripting and level saving in a C++ game I've been working on,
GraLL 2, but given that Panda3D is completely exposed to Python, including physics and interval stuff, this could make scripting a lot easier.
You could have libraries of objects in another file which you just append in using Blender's normal append functionality, thus making it like a game obstacle library. You then tweak the properties or write custom scripts.
This is just something I'd been thinking about for the past day, might look at putting it into action soon. Just started experimenting with Panda3D two days ago. Currently the .egg exporters for Blender also export position data for each mesh and put everything in one file, which gets in the way of this sort of idea. Shouldn't be too hard to modify them to do otherwise - will look into it.