[ QUOTE ]
I would EXPECT the UBE's to run the same callobjects as any other written application however
[/ QUOTE ]
UBEs never have run BSFNs in callobjects in a standard configuration -- in fact, that would degrade performance even more, as the ube would have to send net messages to a callobj and wait for a response for every single BSFN call (and there can be billions of calls in an intensive batch), since the business logic for a single client( batch or interactive user) isn't written in a multi-threaded fashion.
The reason callobj kernel threads make more sense is that they service multiple users, however, each user still is only getting one thread. Think of a single ube as a single user and you see why this makes sense. UBEs run all BSFNs in process, unless you've done some OCM jiggery-pokery, and when they all run in process, the ube processes MUCH faster than it could by talking to callobj kernels.