I am looking for a good game engine for this type of game.
One that is not too complex but not too simple either.
I do have programming experience in C/C++, Java and C#.
If I don't have to pickup a new language to work with that would be a bonus.
Based on this criteria, I think you may be looking for a game development framework, instead of a full-blown engine?!
If you are not afraid of getting a bit lower level I suggest the following ones:
C/C++: SDL
C++: SFML
C#: XNA / MonoGame
Java: libGDX
All of these are battle tested and really well documented, with a million tutorials scattered over the net, so I can wholeheartedly recommend them, although they are a bit lower level and they require a fair amount of coding to get going!
Otherwise, if you would not like to end up developing features which comes out of the box from a higher level game engine I suggest, try out:
Unity
Which can be scripted using C#.
I'm not too much of an engine fan, I like working much more in my code editor and less on a WYSIWYG editor, but have to admit, that you get an astonishing amount of features ready for simplifying game development, and when you need to customize some parts C# is really nice to script with! Also huge user-base means ridiculous amounts of tutorials...
Based on the requirement I believe even simpler and more high-level game making tools can allow you to create something like the old GTA games:
GameMaker: Studio
Construct 2
Put these here just as an extra, maybe interested, but for these you have to learn their built-in language, and most of the work happens on a graphical user interface configuring the hell out of pre-made components, so I would not recommend these in your situation, but who knows, maybe if you try them out, you end up liking them ...
Choose the language and tool you feel comfortable working with, you are going to spend quite some time together ;) !
Also I am not a graphic designer so what are some good/cheap options of creating the images I need for the game?
Do I just have to hire a artist for this or any other quick and easy (and cheap) solutions?
Well, this is a tough one. It depends on the level of quality and the graphical style you want to achieve.
If you would like to avoid paying for an artist, you could use open assets. For a consistent style a photo and texture library could allow you to build the graphics of the city-scape.
http://www.cgtextures.com/
http://opengameart.org/
You could buy some assets too, like 3d models for cars and render them with a 3d editor:
http://www.turbosquid.com/
https://www.blender.org/
If you want to accomplish a consistent and good looking style, maybe looking for a specific aesthetic (like pixel art), I suggest paying for an artist!!!
Br.