Sí, puede utilizar los datos XML de OSM. Desafortunadamente es un archivo XML de 250GB. Tratar de poner todos esos datos en un dispositivo móvil es muy difícil.
No creo que SQLite sea la forma correcta de almacenar los datos del mapa, vas a necesitar algo más eficiente (en términos de eficiencia de espacio en disco). Hay un formato en desarrollo llamado OSM Mobile Binary Format, que puede ser adecuado:
Básicamente, divide el mundo en partes más o menos pequeñas y calcula de forma matemática cuál necesitas para una posición determinada en el mundo. Con este formato, la mayor parte del mundo debería caber en un smartphone normal.
Eso cubrirá la geocodificación inversa. Pero para la geocodificación necesitarás los datos al revés, tal vez una base de datos SQLite que contenga los nombres de las calles y ciudades con una coordenada lat/long para cada una. Una vez que tengas una latitud/longitud, puedes buscar rápidamente en los archivos OSM Mobile Binary para encontrar el resto de los metadatos relacionados con esa entrada.
Debes proporcionar tu propia réplica de los datos para todos los usuarios de tu aplicación. No puedes escribir una aplicación que descargue datos directamente de los servidores de openstreetmap. Se te incluirá en una lista negra. Esto podría significar que tendrías que vender tu aplicación por un precio simbólico para cubrir los costes del servidor.
En cuanto a la licencia, es creative commons/share alike. Tienes que dar una clara atribución a openstreetmap.org en algún lugar de tu aplicación, y cualquier modificación de los datos del mapa debe ser liberada bajo la misma licencia o equivalente (tu aplicación real puede tener cualquier licencia). Consulta la wiki de OSM para más detalles.