The Android SDK formally addresses the issue of a shared or common codebase with something called a library project.
http://developer.android.com/tools/projects/index.html
Basically, the shared code is defined as a library project, then a paid and a free version are simply two different projects in your eclipse workbench, both referencing aforementioned library project.
At build-time, the library project gets merged with either of your releases, which is what you want.
The Android SDK example source code contains a project called TicTacToe that will help you get started with library projects usage.
Good luck.
Daniel