Hi, i'll give you suggestions for both approaches:
Manually create your tiles as nodes. You can do this with no problem loading a texture in your scene, setting its vframes and hframes and you have a tilemap with coordinates that you can use in N sprites. You can create a scene called TileExtended or anything you'd like to name it, attach a script to it to store its properties, give it a texture property and set it to your loaded texture from your scene. Give your TileExtended a type so that you know which coordinate to display in your Tile scene sprite (you'd need to map the coordinates with their types somewhere, maybe in a globals file so it is accessible from anywhere). Then you can instance it N times, set its texture, type and position and you have the map ready.
If you want to use colliders (which I don't recommend for this, as I think it is not really needed since you don't need physics simulations for anything you mentioned), you should limit the colliders to the objects which are displayed in the scene .So if you loaded a 100x100 grid, I don't thing you'll be seeing 10k tiles at the same time, so you should try and optimize to which tiles are colliders added, and which tiles are shown.
I'd go with option 1 which gives you flexibility, and for knowing on which type of tile the player is on, knowing it's a turned based affair, i'd go about it incrementally checking adjacent tiles to the player on each turn.
Hope you find this of use. Good luck!