My first suggestion would also be, to use Bundler and lock your bundle. You can even put the bundle inside your app directory if you want to distribute the gems with it (though this might lead to problems if a gem contains an extension with native code and you're distributing it to a different platform).
Btw, Rails 3 uses Bundler for gem management exclusively. There will be no rake rails:freeze:gems
in Rails 3 anymore.
As another option (if you don't want to use Bundler for some reason), you could manually put the lib dir of a gem to some subdirectory of the lib dir in your app, add it to your load path and require it manually. If a gem contains pure Ruby code without any extension, this might do well (but would be hard to maintain since you'd need to do updates manually).