Python is one of the better choices, especially for prototypes. My personal opinion is however that projects in dynamic languages (python, JavaScript, PHP, ..) are easier to write than to maintain, since you have less compiler support checking stuff for you. That's why I preferr C#, great tools and documentation support, popular etc. I'm not going to force it one you though.
The definition of what a game engine really is has never really been truly defined, but the general idea is that is the code that can be shared for a "type of game", to be complemented with the game-specific content for that game. If someone has already created a game similar to what you want, chances are you could take their code ("engine") and use it either as-is, just replacing maps, graphics etc with your own, or use it as a base to create your own spinoff-engine.
What an engine contains is highly individual. Some engines are very complete and can be used directly by just adding content while others are very low-level frameworks, just defining some overall structure and providing some helper code. In some cases you may want to use an existing rendering solution for example, that might be called a rendering engine, which may or may not be part of a bigger game engine. It's somewhat messy.
Anyway, I wouldn't be too concerned about using an existing engine in your particular situation, it seems perfectly fine to go with something like Xna/MonoGame or pygame if you can't find a nice fit.
True and thanks for the suggestion. I'm going to start taking a look at pygames for the time being. We've got a lot of details about how numbers work in the game down already it's just a matter of putting on screen. This being a first game for both of us means we should start small and ease into this. Between both our life responsibilities, pacing is going to need to be a very serious thing.