Personally, I worried about this a lot more before I wholeheartedly adopted dependency injection.
Whatever mechanism you use to do it (DI1, ColdSpring, LightWire, homebrew), if something injects required components into the places they're needed, it's not so bad to refer to main.buildURL, db.insertUpdate, datasource.getDbType, and so on. Having these kinds of methods scoped into different utility packages actually feels clean and focused to me, and isn't verbose enough to bum me out.
Injecting common utility cfcs into your controller or model base class (if you have one) works well too. Those db and datasource routines probably aren't needed anywhere but in your model components, for example, and they probably are needed by most of them. There are some completely generic functions that are essentially bits of the language they forgot (structMake, arrayMake...) that you may want really everywhere, and those could either go directly in your base base component (if you have one), or in a util cfc that gets injected into it, or into the most common location you have.
I know you're asking the FW1-specific version of this question, which as Sean points out, has a more specific answer. Frankly, I like and use FW1, and I'm nowhere near as smart or experienced as Sean, but that bit of its architecture has always made me kind of uncomfortable. Not that you asked...
Anyway, that's another way to look at it.
Dave Merrill