From sbcl-devel: Loading a FASL file takes the big compiler lock. The first call to MAKE-INSTANCE in compiled code with constant class-name and initargs compiles an optimized constructor (a "ctor"). The end.
So I guess the answer is "don't do that then", at least for now. Putting your startup call in a :after method on asdf:perform doesn't seem to work either, but deferring the startup into a thread of its own (i.e., instead of a toplevel (startup) do (make-thread 'startup)) lets the locks all get released.