Here’s my understanding of it:
A game engine is a tool to help create games. It usually has multiple facets and handles the more generic things itself. For example, game engines usually handle creating and physically rendering objects in the game world, playing sounds, taking input from the mouse, keyboard, or joystick, and even implementing object interaction with a physics engine. The Blender Game Engine is one of those engines, as is Unity 3D, and (I would assume) UDK and CryTek. Even Game Maker or Stencylworks could be considered game engines.
Game Frameworks, on the other hand, provide tools for you, like the ability to draw things onscreen or create physics interactions, but you patch the game together inside of the framework, usually without a graphical environment to tweak things in. Examples of frameworks are Flixel, Flashpunk, Pygame, Love2D, and XNA.
As for your second question, as far as I know, the Blender Game Engine can do quite a bit of the things Unity does, and even some of the things Unity Free can’t.
EDIT: Oh, and as for your question in the topic, I’ve used Unity just for basically 30 minutes or so. It didn’t really grab me at the time (this was a year and some change - 2 years ago).