es posible o definitivamente tengo que utilizar archivo app.config?
Claro que es posible. Las cadenas de conexión no son más que simples strings. Las puedes guardar en cualquier sitio que te venga bien, tal como un archivo de texto, un archivo de recursos, el Registro de Windows... o una base de datos adicional, que esta
vez sí que tendría su cadena de conexión en el .config, pero dentro almacenaría todas las otras cadenas que necesites.
Eso sí, no te funcionará ninguno de los automatismos que generan y recuperan cadenas de conexión en Visual Studio, por ejemplo cuando usas algún diseñador que escribe o lee una cadena. Tendrás que gestionarlas a mano escribiendo código que las lea desde
donde las hayas guardado. Por ejemplo, si usas Entity Framework con database first a través de un edmx generado en tiempo de diseño, el diseñador salva la cadena en el .config y luego cuando instancias un datacontext el constructor predeterminado la busca
en el .config. Si la pones en otro sitio que no sea el .config, en lugar de usar el constructor predeterminado tendrás que usar una sobrecarga que permite pasarle la cadena. Y tendrás que escribir código que tome la cadena de donde la hayas salvado y se la
pase a esa sobrecarga del constructor. Esto es solo un ejemplo; si usas cualquier otro tipo de acceso a datos en lugar de EF te pasará lo mismo: tendrás que averiguar qué hace ese mecanismo con sus cadenas de conexión, y pasarle manualmente la cadena a través
del sitio que tenga previsto para ello.